进程管理工具supervisor

一.介绍

1.Supervisor是一个客户/服务器系统,它可以在类Unix系统中管理控制大量进程。Supervisor使用python开发,有多年历史,目前很多生产环境下的服务器都在使用Supervisor。

2.Supervisor的服务器端称为supervisord,主要负责在启动自身时启动管理的子进程,响应客户端的命令,重启崩溃或退出的子进程,记录子进程stdout和stderr输出,生成和处理子进程生命周期中的事件。可以在一个配置文件中配置相关参数,包括Supervisord自身的状态,其管理的各个子进程的相关属性。配置文件一般位于/etc/supervisord.conf。

3.Supervisor的客户端称为supervisorctl,它提供了一个类shell的接口(即命令行)来使用supervisord服务端提供的功能。通过supervisorctl,用户可以连接到supervisord服务器进程,获得服务器进程控制的子进程的状态,启动和停止子进程,获得正在运行的进程列表。客户端通过Unix域套接字或者TCP套接字与服务端进行通信,服务器端具有身份凭证认证机制,可以有效提升安全性。当客户端和服务器位于同一台机器上时,客户端与服务器共用同一个配置文件/etc/supervisord.conf,通过不同标签来区分两者的配置。

4.Supervisor也提供了一个web页面来查看和管理进程状态,这个功能用得人比较少。

官网:http://supervisord.orghttp://supervisord.org)

二.安装

一定要用Python2,因为3不支持

pip install supervisor

测试是否安装成功:

echo_supervisord_conf

创建配置文件:

echo_supervisord_conf > /etc/supervisord.conf

三.配置文件设置

# 生成必要的配置文件
echo_supervisord_conf > supervisord.conf

# 将配置文件统一放在/etc下
cp supervisord.conf /etc/supervisord.conf

# 为了不将所有新增配置信息全写在一个配置文件里,我们新建一个文件夹,每个配置信息新增一个配置文件,相互隔离
mkdir /etc/supervisord.d/

修改配置文件
vim /etc/supervisord.conf

加入以下配置信息

[inet_http_server]         ; inet (TCP) server disabled by default
port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface
username=user              ; default is no username (open server)
password=123               ; default is no password (open server)

[include]
files = /etc/supervisord.d/*.conf

pip安装产生的二进制文件在/home/superpika/.local/bin/supervisord

加个任务:

vim /etc/supervisord.d/tail.conf
[program:tail1]                                                                            
command=tail -f  /etc/supervisord.conf   ;常驻后台的命令
autostart=true                           ;是否随supervisor启动
autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3                           ;启动尝试次数
stderr_logfile=/tmp/tail1.err.log        ;标准输出的位置
stdout_logfile=/tmp/tail1.out.log        ;标准错误输出的位置

启动

cat /etc/supervisord.conf  # 看一下
supervisorctl shutdown # 关掉之前的
supervisord -c /etc/supervisord.conf # 加载我们的配置

supervisorctl status

打开http://127.0.0.1:9001/

四.常用命令:

1.启动supervisord管理的所有进程supervisorctl start all

2.停止supervisord管理的所有进程supervisorctl stop all

3.启动supervisord管理的某一个特定进程

supervisorctl start program-name // program-name为[program:xx]中的xx

4.停止supervisord管理的某一个特定进程

supervisorctl stop program-name  // program-name为[program:xx]中的xx

5.重启所有进程或某一个特定进程

supervisorctl restart all  // 重启所有
supervisorctl reatart program-name // 重启某一进程,program-name为[program:xx]中的xx

6.查看supervisord当前管理的所有进程的状态

supervisorctl status

7.停止supervisord

supervisorctl shutdown