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

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

我有一个应用程序(以单个二进制文件的形式)需要在我的其中一台服务器上运行,并且我希望能够正确控制其生命周期。我想要的是以下内容:

  • 简单的一个命令启动/停止/重启
  • 尽可能少的配置,我不想设置像 monit 这样的大东西,或者写 500 行 shell 脚本
  • 在日志文件中处理 stdout/stderr/failures
  • 以某种方式管理 pidfile,即只有在进程运行时才有一个 pid 文件(这似乎很难用 shell 脚本手动正确完成)
  • (选修的)如果二进制文件崩溃,可以采取一些措施
  • (选修的)如果服务器重新启动和/或应用程序崩溃,则自动启动

我正在寻找一个轻量级的解决方案,理想情况下它可以与 Ubuntu Server 开箱即用,无需太多配置。

答案1

对于 Ubuntu,我认为暴发户就是你要找的。

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

这应该让你开始做以下事情:

  • 使用“service mybinary start/stop/status”进行服务管理
  • PID 文件管理
  • 崩溃时重生
  • 开机运行
  • 记录在 /var/log/upstart/mybinary.log 下

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

顺便说一句,我觉得应该提一下,Ubuntu 正计划淘汰 Upstart,转而使用 Systemd,但尚未制定路线图。

相关内容