Supervisor多进程管理
新增应用自启动配置
在 etc
的目录 找到 supervisord.d/
文件夹 在文件夹下创建 conf
文件夹
mkdir conf
进入 conf
文件夹
创建应用的 .conf
文件 名称自己取(直接在 supervisord.d/
也可以直接创建配置文件)
touch web-api.conf
进入 web-api.conf
文件进行编辑
vi web-api.conf
添加如下配置
[program:web-api]
command= python3 main.py ; 启动命令
directory=/home/web-api ; 应用程序根目录
autostart=true ; 自动启动
autorestart=true ; 自动重启
stderr_logfile=/home/web-api/error.log ; 错误日志文件路径
stdout_logfile=/home/web-api/output.log ; 输出日志文件路径
environment=TZ="Asia/Shanghai" ; 应用程序时区
使用项目venv虚拟环境
[program:web-api]
command=/bin/bash -c "source venv/bin/activate && venv/bin/python main.py"
directory=/home/web-api
autostart=true
autorestart=true
stderr_logfile=/home/web-api/error.log
stdout_logfile=/home/web-api/output.log
virtualenv=venv
environment=TZ="Asia/Shanghai"
更新应用配置命令
重新读取配置
supervisorctl reread
更新配置
supervisorctl update
我一般更新了
.conf
的配置 两个命令都会输入一遍再输入命令查看应用是否启动成功了
ps -ef|grep web-api
如果启动了 使用命令把应用进程杀掉
kill -9 进程号
再次输入
ps -ef|grep web-api
命令查看应用是否自启动了如果自动了
supervisord
配置也就完成了子进程reload
如果不指定子服务名称,默认重新启动所有的子服务列表。指定子服务名,仅仅重启当前子服务,其它服务不受影响。所有子服务是指不管配置是否发生修改,都会重启。
# 刷新服务列表
supervisorctl reload
子服务update
重启所有配置发生更改的子服务(包含新增子服务),配置未发生变化的子服务不重启。
# 刷新服务列表
supervisorctl update
进程管理运行
此种方式管理子进程颗粒度更小。
# 启动指定服务
supervisorctl start program_name
# 停止指定服务
supervisorctl stop program_name
# 重启指定服务
supervisorctl restart program_name
# 启动所有服务
supervisorctl start all
# 停止所有服务
supervisorctl stop all
News article is edited by: Caesar - 2023-10-7, 11:09