1. 安装 supervisor
# 方法1
easy_install supervisor
#方法2
yum instal1-y supervisor
#查看版本
2. 启动supervisor
# 方法1
cd/1ib/systemd/system
systemctl start/stop/reload sppervisord.service
# 如果启动报错
systemctl list-unit-files --type=service l grep supervisor
#激活开机启动命令
systemctl enable supervisord.service
#验证是否开机启动
systemct1 is-enabled supervisord
#方法2
echo_supervisord_conf >/etc/supervisord.conf
vim /etc/supervisord.conf
#修改include中的file目录,改成如下
128 [inc lude]
129 fles =/etc/supervisor d.d/.ini
supervisord -c /etc/supervisord.conf
# 检查是否启动supervisor
3. 相关命令
# 当一个服务有自动启动修改为手动启动时,执行以不就ok
supervisorctl reread
# 更新新的配置到supervisord(不会重启原来已经运行的程序)
supervisorctl update
# 载入所有的配黑文件,并按新的配需启动、管理所有的进程(会重启原来已运行的程序
supervisorctl reload
#查看状态
supervisorctl status
#日常启停服务
4. 配置
[program:fastapi]
environment=APP_CONFIG=dev ;设置环境变量
process_name=%(program_name)s-%(process_num)02d ;进程名称
command=/root/incm-monitor-service/venv/bin/python3 main.py --port=%(process_num)s; 被监控的进程路径
directory=/root/incm-monitor-service/src ;执行command前,先chdir 到此目录,所以上面main.py是相对路径
numprocs=6 ; 同时启动的进程数量
numprocs_start=5001 ; 变量%(process_num)从哪里开始计数,依次递增1
user=oper
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
stopasgroup=true ; 停止父进程时会停止所有的子进程
stderr_logfile=NONE
stdout_logfile=NONE ; 不记录日志,由程序自己记录
# 如下拓展
priority=1 ; 数字越高,优先级越高
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ;