我有一个RingoJSnetworking服务器(在Jetty上运行),它是Apache反向代理设置的一部分。
我想要多个Ringo进程在后台自主运行,在重启时自动启动等。基本上,Apache或Postgresql守护进程一样。
我已经调查了后台运行的进程(通过&或bg),nohup,并使用屏幕来维护多个上下文。 我不确定这里的最佳做法是什么。
我希望能够轻松识别(友好名称)正在运行的每个RingoJS进程。 (每个应用程序一个)。 那么就可以像apachectl那样轻松地启动和停止它们。 我希望进程在重新启动时自动启动,而不会受到重复的ssh会话的影响。
屏幕似乎是一个不错的select,但它的用例似乎更多的移植shell上下文,然后它用于维护长时间运行的系统进程。 我可以在后台运行作业,但是在注销后担心僵尸进程或者不清楚识别哪个应用/服务正在运行的神秘PID。
任何人都可以提供一些关于我应该做什么来达到这个结果的指针?
谢谢。
你应该创build一个init服务。 Ubuntu使用暴发户。 http://upstart.ubuntu.com/
对于没有作为deamon运行的内置方法的应用程序,您可能希望在您创build的init / upstart脚本中使用start-stop-daemon命令来启动应用程序。 您可以使用start-stop-daemon在后台启动一些东西,它可以将pidlogging到文件系统,以便在时间到了的时候停止进程。
只要看看/etc/init.d/中的很多例子,特别是为模板签出/ etc / init / skeleton。 许多现有的启动脚本使用start-stop-daemon。 包括ssh,ntp,rsync等等。