我正在使用Ruby Daemon-kit来设置一个服务,该服务为我的Rails应用程序执行各种后台操作。
当我在命令行中调用时,它工作得很好:
./bin/bgservice如何为它创建守护进程initd启动脚本,以便它在重新启动时自动启动?
发布于 2011-03-04 12:07:21
有几种方法:
/etc/init.d/脚本,这些脚本可以放在/etc/rc?.d/目录中(或者放在目标发行版上的任何位置)。有关此机制的一些详细信息可以在Debian policy guidelines和openSUSE initscript tutorial中找到。在initscripts中有许多令人讨厌的发行版特性,所以不要觉得编写一个简单的特性,并要求发行版为他们的环境定制“更好”的特性。(例如,任何从Debian派生的发行版都将提供非常有用的start-stop-daemon(8)帮助程序,但其他可以为支持upstart的发行版(我认为是Ubuntu、Google ChromeOS、Fedora、..更多?)。upstart文档仍然相当薄弱,但在Ubuntu上的/etc/init/中有some details和大量示例,可能在其他使用upstart的发行版中也是如此。在所有发行版中纠正依赖项可能是一些工作,但是与initscripts.inittab(5)文件的发行版上向/etc/inittab添加行相比,编写和维护upstart作业规范看起来要简单得多。只有当您的程序不执行通常的守护进程fork(2)/setsid(2)/fork(2)咒语时,这才是有用的,因为init使用从fork(2)获得的pid来确定您的程序是否需要restarted.cron(8)支持crontab(5)文件中的@reboot说明符。这既可以由系统crontab使用,也可以由用户crontab使用,如果您只想以常规登录帐户运行该程序,这可能会更好。发布于 2011-03-15 22:01:14
作为daemon-kit的作者,我避免编写任何init样式的脚本,因为要处理各种发行版,它们是从旧的init-V样式迁移到较新的upstart/insserv,这给自己省去了一个噩梦。
我推荐这样做的方法是:使用神的配置生成器,并确保在启动时(通过runit或其他方式)启动神,并且神最初启动守护进程并使其保持运行。
在最好的情况下,我将扩展daemon-kit以能够生成用于引导的runit脚本……
HTH。
https://stackoverflow.com/questions/5189319
复制相似问题