我正在使用 C/C++ 编写一个简单的守护程序应用程序,我希望它在 Linux 启动时启动。
我已经尝试修改/etc/init.d/skeleton以将脚本添加到init.d目录中,如下所示
在/usr/sbin/目录中添加了我的守护程序应用程序并更改NAME=myDaemon
update-rc.d myDaemon default在终端写
并添加了指向rc#.d目录的符号链接
但它没有用。
我的第二次尝试是修改rc.local为
/usr/sbin/myDaemon start
Run Code Online (Sandbox Code Playgroud)
但这也不起作用。
如何让我的守护进程从操作系统启动?我想以编程方式做所有事情。
我使用 Ubuntu 10.10,但如果所有发行版都存在通用解决方案,那就太好了!
你不修改的/etc/init.d/skeleton文件。您将其复制到一个新文件/etc/init.d/mamoudservice(替换mamoudservice为更合适的名称),然后适当地编辑该新文件。
然后你添加一个符号链接/etc/rc2.d/S99mamoudservice到/etc/init.d/mamoudservice等。
使用例如
/bin/bash -vx /etc/init.d/mamoudservice start
Run Code Online (Sandbox Code Playgroud)
了解bashshell如何解释您的脚本。
如果您的守护程序程序/usr/sbin/mamouddaemon是用 C 或 C++ 编写的,我建议使用openlog和sysloginside,至少是为了获取调试消息(不要输出到守护程序stderr或stdout在守护程序中,它可能无处可去)。
拥有/etc/init.d/mamoudservice脚本的另一种方法可能是在您的脚本中添加一个@reboot条目crontab