在 Linux 中,对于一个后台服务,如果要可靠地在后台运行,最好能监控进程状态,在意外结束时能自动重启。
常见的功能全面的主流工具主要有 monit(C)、supervisor(Python)、goreman(Go),其中 goreman 是对 Ruby 下广泛使用的 foreman 工具,使用 golang 的重写。
在此,仅介绍下在 Linux 中如何使用。
Monit
Monit 是一款功能非常丰富的进程、文件、目录和设备的监测软件,通过 C 语言开发,是一款轻量级的后台管理服务,适用于 *nix 平台。
它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误,同时 Monit 包含一个内嵌的 HTTP(S) Web 界面,你可以使用浏览器方便地查看 Monit 所监视的服务器。
在 CentOS 中,可以直接通过如下命令安装。
# yum --enablerepo=epel install monit
如果启动时不使用 arguments 参数,则会直接作为服务进程启动,否则尝试链接 127.0.0.1:2812 并执行相应的命令;简单列举下 monit 启动是相关的命令,以及参数。
monit [options] {arguments}
常用参数:
-I 前端执行,默认会自动切换为后台执行;
-t 对配置文件执行参数检查;
-c 指定配置文件;
-g
-i 查看monit的ID,第一次会自动生成并保存到~/.monit.id文件中;
-r 重新生成ID;
-H [file] 生成指定文件的SHA1和MD5校验值;
常用参数:
status [name]
查看某个服务的状态,如果不使用name,则会打印所有服务状态;
summary [name]
打印概览;
quit
退出服务;
常用命令:
monit -I -c monitrc
monit -c monitrc quit
monit -c monitrc reload
配置
启动内置httpd服务
其中 status、summary、report 指令,需要启动 httpd 服务才可以,否则无法建立链接。
set httpd port 2812 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
allow admin:monit # require user 'admin' with password 'monit'
参考
Monit Offical,可以查看官方文档 Monit Reference,也可以直接查看 man 。