我正在使用 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
但这也不起作用。
如何让我的守护进程与操作系统一起启动?我想以编程方式完成所有事情。
我使用 Ubuntu 10.10,但如果有一个适用于所有发行版的通用解决方案,那就太好了!
答案1
你不调整文件/etc/init.d/skeleton
。你复制将其复制到一个新文件/etc/init.d/mamoudservice
(替换mamoudservice
为更合适的名称),然后您编辑相应地该新文件。
然后添加一个符号链接从/etc/rc2.d/S99mamoudservice
to/etc/init.d/mamoudservice
等。
使用例如
/bin/bash -vx /etc/init.d/mamoudservice start
了解bash
shell 如何解释您的脚本。
如果您的守护程序/usr/sbin/mamouddaemon
是用 C 或 C++ 编码的,我建议使用开放日志在syslog
内部,至少要获取调试消息(不要输出到守护程序stderr
或stdout
在守护程序中,它可能无处可去)。
拥有/etc/init.d/mamoudservice
脚本的另一种方法可能是将一个@reboot
条目放入您的crontab
答案2
尝试检查配置与您的服务名称,然后“打开”。这必须以 root 身份运行。