我应该如何pipe理Ubuntu上长时间运行的服务器进程?

我有一个应用程序(以一个二进制的forms),我需要在我的一台服务器上运行,我希望能够正确地控制它的生命周期。 我想要的是以下几点:

  • 简单的一个命令开始/停止/重启
  • 尽可能less的configuration,我不想设置像monit这样的大事情,或者写500行的shell脚本
  • 在日志文件中处理stdout / stderr / failure
  • 以一种只有一个pid文件的方式来pipe理一个pid文件(如果这个进程正在运行,这似乎很难正确使用shell脚本)
  • (可选)如果二进制文件崩溃,可以做些什么
  • (可选)在服务器重新启动和/或应用程序崩溃时自动启动

我正在寻找的是一个轻量级的解决scheme,可以与Ubuntu Server直接配合使用,不需要太多configuration。

对于Ubuntu,我认为Upstart就是你正在寻找的东西。

https://askubuntu.com/questions/19320/how-to-enable-or-disable-services这AskUbuntu问题具有良好的信息开始你在做什么。

简而言之,将以下内容复制到/etc/init/mybinary.conf。

description "My Binary" author "Jakub Arnold <[email protected]>" start on (local-filesystems and net-device-up) stop on runlevel [!2345] respawn pre-start script RUN_MODE="daemons" end script exec mybinary 

这应该让你与以下几点:

  • “服务mybinary启动/停止/状态”服务pipe理
  • PID文件pipe理
  • 在崩溃时重生
  • 在启动时运行
  • login/var/log/upstart/mybinary.log

作为所有您需要的信息的Upstart食谱: http : //upstart.ubuntu.com/cookbook/

顺便说一下,我觉得我应该提到Ubuntu正在计划退休Upstart赞成Systemd,但没有路线图。