Supervisor进程管理与开机自动启动

简介

Supervisor是一个客户端/服务器系统,允许其用户控制类似UNIX的操作系统上的许多进程。
Supervisor已经过测试,可以运行在Linux(Ubuntu),Mac OS X(10.4、10.5、10.6)和Solaris(对于Intel为10)和FreeBSD 6.1上。在大多数UNIX系统上,它可能会正常工作。
Supervisor完全不会在任何Windows版本下运行。
Supervisor旨在在Python 3版本3.4或更高版本以及Python 2版本2.7上工作。
该过程在Ubuntu18.04下进行,其他版本相似

1.Supervisor安装

  1. 推荐安装方式
sudo apt-get install supervisor
  1. yum源安装
yum install supervisor
  1. pip安装
pip install supervisor

查看是否安装成成功

echo_supervisord_conf

出现以下内存则安装成功
在这里插入图片描述

2.Supervisor配置

初始化配置文件

  1. 创建自己的配置文件
mkdir /usr/supervisor
  1. 此时需要将创建好的supervisor文件夹授权
sudo chmod -R 777 supervisor
  1. 拷贝配置文件修改
echo_supervisord_conf > /usr/supervisor/supervisord.conf

管理配置文件

这里可以在/usr/supervisor/supervisord.conf文件后面追加,也可以另外写(推荐另外写)

  1. 新建配置文件文件夹
mkdir /usr/supervisor/supervisord.d/
  1. 读取配置文件夹下所有.conf文件
    将/usr/supervisor/supervisord.conf文件中的以下部分取消注释(使用分号";"注释)
[include]
files = /usr/supervisor/supervisord.d/*.conf

为每一个需要管理的进程设置配置文件

例如:要启动的进程为home/user/test.sh,设置配置文件为

[program:test]
command=bash home/user/test.sh; 启动命令
priority=1                    ; 数字越高,优先级越高(对不同进程而言)
numprocs=1                    ; 启动几个进程
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                   ; 正常退出代码
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout

3.Supervisor使用

  1. 查看Supervisor是否正在运行
ps -A | grep supervisord
  1. 启动supervisor并更新supervisor的配置
sudo supervisord -c /usr/supervisor/supervisord.conf
  1. 杀死supervisor进程
sudo kill [supervisord进程id]

4.Supervisor开机自动启动

  1. 件/usr/lib/systemd/system/ 新建文件supervisord.service,并添加配置内容
[Unit]
Description=Process Monitoring and Control Daemon
After=rc-local.service nss-user-lookup.target
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/supervisor/supervisord.conf ;开机启动时执行
ExecStop=/usr/bin/supervisord shutdown
ExecReload=/usr/bin/supervisord reload
killMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
  1. 设置开机启动
systemctl enable supervisord
  1. 验证是否开机启动
systemctl is-enabled supervisord

5.Supervisor常用命令

supervisorctl status        //查看所有进程的状态
supervisorctl update        //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序
posted @ 2021-01-26 13:52  博0_oer~  阅读(112)  评论(0编辑  收藏  举报