我正在使用Ruby Daemon-kit来设置为我的Rails应用程序执行各种后台操作的服务。
当我在命令行上打电话时,它工作正常:
./bin/bgservice
如何为它创建守护进程initd启动脚本,以便在重启时自动启动?
答案 0 :(得分:2)
有几种方法:
您可以编写/etc/init.d/
个脚本,这些脚本可以放在/etc/rc?.d/
目录中(或者它们存在于目标发行版的任何位置)。有关此机制的一些详细信息,请参阅Debian policy guidelines和openSUSE initscript tutorial。在initscripts中有一些令人讨厌的特定于发行版的特性,所以不要想写一个简单的特性,并要求发行版为他们的环境提供量身定制的“更好”的特性。 (例如,任何Debian派生的发行版都将提供非常有用的start-stop-daemon(8)
帮助器,但是其他发行版中却非常缺失。)
您可以为支持upstart
(我认为是Ubuntu,Google ChromeOS,Fedora,更多?)的发行版编写upstart
个工作规范。 upstart
文档仍然相当薄弱,但在{Untntu上/etc/init/
中有some details和大量示例,可能与使用upstart
的其他发行版中的位置相同。在所有发行版中获得正确的依赖关系可能会有所帮助,但upstart
作业规范看起来比编写简单的内容更容易编写和维护。
您可以在仍支持标准SysV-init /etc/inittab
文件的发行版上向inittab(5)
添加行。这仅在您的程序不执行常规守护程序fork(2)
/ setsid(2)
/ fork(2)
咒语时才有用,因为init
使用pid it 从fork(2)
获取以确定您的程序是否需要重新启动。
现代Vixie cron(8)
支持@reboot
个文件中的crontab(5)
说明符。这可以由系统crontab以及用户crontabs使用,如果您只想将程序作为常用的登录帐户运行,这可能会很好。
答案 1 :(得分:0)
作为daemon-kit的作者,我避免制作任何init风格的脚本,因为它们处理各种发行版,并且它们是从旧的init-V样式迁移到新的upstart / insserv,从而为自己节省了噩梦。 / p>
我建议如何使用神配置生成器,并确保上帝在启动时启动(通过runit或其他方式),并且上帝启动守护进程最初并使其保持运行。
充其量我会扩展daemon-kit,以便能够生成用于启动的runit脚本......
HTH。