如何在启动时将二进制文件设置为像Apache一样启动(作为服务运行)

我试图设置PhantomJS作为服务运行。 我在/etc/init.d中find了这个框架文件,并且在Ubuntu 12.10上运行。 为了解决这个问题,我find了/etc/rc*.d目录下的符号链接,发现Apache运行在2到5的运行级别。

我的问题是我刚创build了一个名为S02phantomjs在2到5文件夹中的符号链接,并将其指向我放在/etc/init.d中的脚本? 或者我应该使用一些应用程序来configuration这个?

我担心的是我错过了一些东西。 而且这个数字部分的顺序有一个重要的意义,我不想搞乱。

此外,我不知道是否还有其他事情要做,不仅要确保每次启动都运行。 但是让它现在开始运行。

最后一个问题。 我的脚本,基于骨架,当我在terminal中运行时,它就像正常运行PhantomJS时一样坐着等待。 我想让它像Apache一样在后台运行。 为了完成这个,我需要做些什么?

谢谢大家!

由于PhantomJS不会提供任何开箱即用的运行守护进程的支持,您应该自己照顾好您的服务。 find/etc/init.d/skeleton并用它来创build一个初始化脚本是非常好的。 你所描述的表明你的过程不会进入后台,这可以通过一些包装来解决。 这可以是特定于基于debian的发行版的start-stop-daemon ,也可以是一个单独的daemon包,可以redirectstdin / stdout并处理其他情况。

由于我几乎可以肯定你使用传统的编写init脚本的方式,所以我怀疑你可能只是给你的start-stop-daemon命令添加--background

当你修好你的脚本时,检查你是否拥有root:root权限0755(例如rwxr-xr-x )。 在此之后,用Michael Hampton提供的update-rc.d命令更新sysvinit符号链接。

就像一个注释,还有一些其他工具,支持发送过程到后台,可能在其他情况下是有用的。 比如, 主pipe , 新贵和systemd都支持这个。 请参阅他们的文档以获得确切的语法。 如果你打算使用其中的一个,那就不需要编写完整的init脚本。

当然,初始化脚本是启动守护进程最古老也是最受支持的方式。

如果初始化脚本已经存在并正确写入,那么就可以像其他任何初始化脚本一样启用它:

 update-rc.d phantomjs defaults 

或(12.04+)

 update-rc.d phantomjs enable 

(当你用apt-get和它的表兄弟安装软件包时,这通常是默认完成的)