如何为Daemon-kit项目设置init.d rc脚本?

时间:2011-03-04 03:27:51

标签: daemon upstart autostart init.d

我正在使用Ruby Daemon-kit来设置为我的Rails应用程序执行各种后台操作的服务。

当我在命令行上打电话时,它工作正常:

./bin/bgservice

如何为它创建守护进程initd启动脚本,以便在重启时自动启动?

2 个答案:

答案 0 :(得分:2)

有几种方法:

  1. 您可以编写/etc/init.d/个脚本,这些脚本可以放在/etc/rc?.d/目录中(或者它们存在于目标发行版的任何位置)。有关此机制的一些详细信息,请参阅Debian policy guidelinesopenSUSE initscript tutorial。在initscripts中有一些令人讨厌的特定于发行版的特性,所以不要想写一个简单的特性,并要求发行版为他们的环境提供量身定制的“更好”的特性。 (例如,任何Debian派生的发行版都将提供非常有用的start-stop-daemon(8)帮助器,但是其他发行版中却非常缺失。)

  2. 您可以为支持upstart(我认为是Ubuntu,Google ChromeOS,Fedora,更多?)的发行版编写upstart个工作规范。 upstart文档仍然相当薄弱,但在{Untntu上/etc/init/中有some details和大量示例,可能与使用upstart的其他发行版中的位置相同。在所有发行版中获得正确的依赖关系可能会有所帮助,但upstart作业规范看起来比编写简单的内容更容易编写和维护。

  3. 您可以在仍支持标准SysV-init /etc/inittab文件的发行版上向inittab(5)添加行。这仅在您的程序不执行常规守护程序fork(2) / setsid(2) / fork(2)咒语时才有用,因为init使用pid it fork(2)获取以确定您的程序是否需要重新启动。

  4. 现代Vixie cron(8)支持@reboot个文件中的crontab(5)说明符。这可以由系统crontab以及用户crontabs使用,如果您只想将程序作为常用的登录帐户运行,这可能会很好。

答案 1 :(得分:0)

作为daemon-kit的作者,我避免制作任何init风格的脚本,因为它们处理各种发行版,并且它们是从旧的init-V样式迁移到新的upstart / insserv,从而为自己节省了噩梦。 / p>

我建议如何使用神配置生成器,并确保上帝在启动时启动(通过runit或其他方式),并且上帝启动守护进程最初并使其保持运行。

充其量我会扩展daemon-kit,以便能够生成用于启动的runit脚本......

HTH。