标准或最好的方法来保持活动进程由init.d启动

我正在寻找一个标准的方法或最佳实践来保持一个由init.d shell脚本启动守护进程

或者甚至更好,有没有办法让它直接从/etc/init.d

具体来说,我有一个叫做dtnd的守护进程,并有一个无限循环来寻找进程,如果有的话,守护进程会再次唤醒它们。 另外,我使用start-stop-daemon工具来让给定的系统用户运行start-stop-daemon

我想从启动运行这个dtnd守护进程。 为了实现这个行为,我创build了一个init.d脚本,它使用start,stop和status命令来“包装” dtnd文件。

我有两个问题,我想解决:

  1. 有没有办法实现从init.d shell脚本保持活着的一些进程 。 是一种标准/最好的方式吗?

  2. build议保持一个守护进程无限循环活着? 我想最好使用一些守护进程来达到这个目的。 这是正确的?

非常感谢您的参与!

您可能想要在守护进程代码中使用守护进程(3)库函数。 你应该知道系统日志(3) (至少要记录错误条件)。 你可能应该轻轻抓住SIGTERM信号。 仔细阅读信号(7)

服务器程序通常是基于事件循环 (在概念上它是一个无限循环)。 您将使用现有的事件循环库(例如libev , libevent , glib ,…)或围绕多路复用系统调用(如poll(2))构建您自己的事件循环库

阅读高级Linux编程,并研究一些现有的免费软件守护进程的源代码。

也许dbus也是与你的目标相关的(我不是很明白:“寻找下来的过程”究竟意味着什么?你可以用setrlimit来设置一些限制(2)经常通过ulimit bash内建的.bashrc来调用)

还有crontab(5)的@reboot项,但这不是系统守护进程的推荐做法(但是可以在用户crontab文件中使用它)。