我制作了一个小型实用程序,用于C
监视udev
电源事件并自动调整笔记本电脑背光亮度。 (我运行的是 Ubuntu 15.04)
我运行了以下命令,它在启动时运行得很好。
$ sudo cp powermonitor /etc/init.d/powermonitor
$ sudo chmod +x /etc/init.d/powermonitor
$ sudo update-rc.d powermonitor defaults
然而,在监视其 CPU 使用情况htop
一段时间后,我注意到它现在消失了。该程序不接受任何命令行参数,尽管 Linux 似乎试图通过以下方式启动它:
/etc/init.d/powermonitor start
我应该做些什么来确保该流程继续运行?
编辑:澄清一下,powermonitor
是可执行文件而不是脚本。
答案1
中的文件/etc/init.d
不应被编译为可执行文件。您可能将编译后的可执行文件放在其他地方/usr/local/bin
;然后你写一个初始化脚本in /etc/init.d
,它知道如何启动和停止已编译的程序。通常这很简单,只需在后台运行它来启动,然后杀死它的 PID(或使用 的可执行文件名称killall
)来停止。init
将使用单个参数调用 init 脚本,即单词start
, stop
, restart
&c.;脚本有责任了解如何运行服务本身。
如需快速介绍,请尝试这里。您的目录中可能有一个示例骨架脚本/etc/init.d
,您可以对其进行更改以适合您的情况。
顺便说一句,您正在运行什么发行版?许多现代发行版现在运行systemd
而不是sysvinit
使用(默认情况下)声明性单元文件而不是初始化脚本; IMO 单元文件更容易编写。 systemd 提供了 sysvinit 兼容模式,因此您可以自己运行它。如果是这样,我建议编写一个单元文件而不是脚本。