由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文件中使用它)。

    链接地址: http://www.djcxy.com/p/75489.html

    上一篇: Standard or best way to keep alive process started by init.d

    下一篇: debugging /etc/init.d startup scripts in Ubuntu