让守护进程与 Linux 一起启动

让守护进程与 Linux 一起启动

我正在使用 C/C++ 编写一个简单的守护程序应用程序,我希望它在 Linux 启动时启动。

我尝试修改/etc/init.d/skeleton以将脚本添加到 init.d 目录中,如下所示

  1. 在目录中添加了我的守护程序应用程序/usr/sbin/并进行了更改NAME=myDaemon

  2. update-rc.d myDaemon default在终端中写入

  3. 它添加了到rc#.d目录的符号链接

但这没有用。

我的第二次尝试是修改rc.local

/usr/sbin/myDaemon start 

但这也不起作用。

如何让我的守护进程与操作系统一起启动?我想以编程方式完成所有事情。

我使用 Ubuntu 10.10,但如果有一个适用于所有发行版的通用解决方案,那就太好了!

答案1

你不调整文件/etc/init.d/skeleton。你复制将其复制到一个新文件/etc/init.d/mamoudservice(替换mamoudservice为更合适的名称),然后您编辑相应地该新文件。

然后添加一个符号链接从/etc/rc2.d/S99mamoudserviceto/etc/init.d/mamoudservice等。

使用例如

   /bin/bash -vx /etc/init.d/mamoudservice start

了解bashshell 如何解释您的脚本。

如果您的守护程序/usr/sbin/mamouddaemon是用 C 或 C++ 编码的,我建议使用开放日志syslog内部,至少要获取调试消息(不要输出到守护程序stderrstdout在守护程序中,它可能无处可去)。

拥有/etc/init.d/mamoudservice脚本的另一种方法可能是将一个@reboot条目放入您的crontab

答案2

尝试检查配置与您的服务名称,然后“打开”。这必须以 root 身份运行。

相关内容