我已经为在 Ubuntu 上运行的嵌入式系统编写了 Qt 代码。
我想在 Ubuntu 中将程序作为服务运行,以便可以使用 停止或启动它monit
。我见过一些人在 中创建一个新文件/etc/init.d
并在其中添加他们的可执行文件路径。
但我想知道将我的程序作为服务运行的最佳方法是什么?谢谢
答案1
在 Ubuntu 中,大多数init
服务被替换为upstart
工作。
答案2
/etc/init.d
从(或者,/etc/init
对于 upstart 来说,是从)启动的程序被称为守护进程它们通常作为后台进程运行,所有输出都重定向到日志文件。守护进程通常在系统启动时启动,不依赖于 GUI 会话的运行,也不依赖于用户登录其帐户等。
普通的“用户空间”图形程序则截然不同 - Qt 应用程序通常从 X 会话中启动,从技术上讲是 X 进程的“子进程”,因此当 X 退出时,应用程序将终止。从概念上讲,一台机器上可能同时运行多个 X 会话,每个会话中都运行着应用程序的单独副本,因此添加应用程序的启动脚本的想法/etc/init.d
甚至在原则上都行不通。
您可以通过配置 X 使其在启动时自动启动您的应用程序来执行与您想要的操作类似的操作。更进一步,您可以使用极简窗口管理器,该管理器只会以最大化全屏方式运行您的应用程序。这称为“信息亭模式” - 您可以在网上找到一些教程。例如,这是关于 Unix 和 Linux 的一个问题:基于 Debian 的系统,只有一个 GUI 程序,没有其他程序