由init.d启动的标准或最佳方式保持活动进程
我正在寻找一种标准方法或最佳实践来保持由init.d
shell脚本启动的守护进程。
或者甚至更好,有没有一种方法可以直接从/etc/init.d
保存它?
具体来说,我有一个叫做dtnd
的守护进程,并且有无限循环来寻找进程的进程,如果有的话,守护进程会再次唤醒它们。 另外,我使用start-stop-daemon
工具来通过给定的系统用户运行start-stop-daemon
。
我想从启动中运行这个dtnd
守护进程。 为了实现这种行为,我创建了一个init.d脚本,它使用start,stop和status命令“封装”了dtnd
文件。
我有两个我想要解决的问题:
有没有一种方法可以实现从init.d shell脚本中保存一些进程。 是一种标准/最佳方式?
建议让守护进程保持无限循环状态? 我想最好使用守护进程等工具来实现这一点。 这是正确的?
非常感谢您的参与!
您可能想在守护程序的代码中使用守护进程(3)库函数。 你应该知道系统日志(3)(至少记录错误情况)。 你可能应该轻轻抓住SIGTERM
信号。 仔细阅读信号(7)
服务器程序通常是基于事件循环的(在概念上它是一个无限循环)。 您将使用现有的事件循环库(例如libev,libevent,glib,...)或围绕多路复用系统调用(如poll(2))构建您自己的事件循环库
阅读高级Linux编程并研究一些现有的免费软件守护进程的源代码。
也许dbus与你的目标也是相关的(我并不真正了解:“查找下来的过程”究竟意味着什么?你可以用setrlimit来设置一些限制(2)通常通过ulimit
bash内建的某些.bashrc
来调用)
还有crontab(5)的@reboot
条目,但这不是系统守护程序的推荐做法(但可以在用户crontab文件中使用它)。
上一篇: Standard or best way to keep alive process started by init.d