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

Adr*_*nez 5 linux shell daemon startup init.d

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

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

具体来说,我有一个dtnd带有无限循环的守护进程,它寻找向下进动,如果有的话,守护进程再次唤醒它们.此外,我使用该start-stop-daemon工具,以便从给定的系统用户运行进程.

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

我有2个问题需要解决:

  1. 有没有办法从init.d shell脚本实现一些进程.是标准/最佳方式练习吗?

  2. 建议让守护进程无限循环?我想最好使用像守护进程这样的工具来实现这一点.这是正确的?

非常感谢您的参与!

Bas*_*tch 2

您可能想在守护程序代码中使用daemon(3)库函数。您应该了解syslog(3)(至少记录错误情况)。您可能应该轻轻地捕捉到SIGTERM信号。仔细阅读信号(7)

服务器程序通常是基于事件循环的(并且它在概念上是无限循环)。您可以使用现有的事件循环库(例如libevlibeventglib等),也可以围绕poll(2)等多路复用系统调用构建自己的事件循环库

阅读高级 Linux 编程并研究一些现有自由软件守护程序的源代码。

也许dbus也与你的目标相关(我不太明白:“寻找下行进程”到底意味着什么?你可以使用setrlimit(2)ulimit设置一些限制,通常通过某些 bash 内置函数调用.bashrc

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