linux 进程管理工具 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页面来查看和管理进程状态,对于公司开发,一般不用,可以在虚拟机上玩。
  • 官网链接

二、安装

使用python2系列,python3暂未支持此功能

pip install supervisor

测试是否安装成功

echo_supervisord_conf

创建配置文件

echo_supervisord_conf > ../supervisord.conf

三、配置文件

生成必要的配置文件
echo_supervisord_conf > supervisord.conf
将配置文件统一放在目录下
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
  • 正式写入时将注释删除(PS: 分号和包含分号之后的所有注释说明删除)
[program:tail1]    ;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 查看supervisor管理进程的状态
  • 打开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  

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

supervisorctl restart all  // 重启所有
supervisorctl reatart program-name // 重启某一进程

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

supervisorctl status

7、停止 supervisord

supervisorctl shutdown

8、更新 新的配置到 supervisord

supervisorctl update

9、重新启动配置中的所有程序

supervisorctl reload

10、同时开启多个进程
增加配置

process_name=%(program_name)s_%(process_num)02d              ;多进程名称肯定不能相同,匹配多个
numprocs=4                                                   ;启动N个进程

举例:

[program:tail1]    ;program的名字是 tail1                                                                        
command=tail -f  /etc/supervisord.conf   ;常驻后台的命令
process_name=%(program_name)s_%(process_num)02d              ;多进程名称肯定不能相同,匹配多个
numprocs=4                                                   ;启动N个进程
autostart=true                           ;是否随supervisor启动
autorestart=true                         ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3                           ;启动尝试次数
stderr_logfile=/tmp/tail1.err.log        ;标准输出的位置
stdout_logfile=/tmp/tail1.out.log        ;标准错误输出的位置

PS: 配置文件路径可以更改,文件内的路径也要同步更改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值