![我应该如何管理 Ubuntu 上长时间运行的服务器进程?](https://linux22.com/image/653038/%E6%88%91%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E7%AE%A1%E7%90%86%20Ubuntu%20%E4%B8%8A%E9%95%BF%E6%97%B6%E9%97%B4%E8%BF%90%E8%A1%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我有一个应用程序(以单个二进制文件的形式)需要在我的其中一台服务器上运行,并且我希望能够正确控制其生命周期。我想要的是以下内容:
- 简单的一个命令启动/停止/重启
- 尽可能少的配置,我不想设置像 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,但尚未制定路线图。