supervisor管理python进程

前言

        平时开发调试中使用conda环境,项目比较多环境多,而且命令繁杂,每一次启动项目都可能会因为忘记启动方式而频繁报错。现在可以通过supervisor来管理,只需要配置几个文件,就可以轻松通过简单一致的命令启动工程,并且保持在后台运行,如果程序异常中断,还可以自动重启。

安装

apt install supervisor

生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

在配置文件里修改配置内容,一般在配置文件的最后面

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

为每个工程配置conf

/etc/supervisord.d是一个所有进程配置的父文件夹,比如有project1,project2,project3,那么/etc/supervisord.d文件夹中就会有project1.conf,project2.conf,project3.conf

创建配置文件夹

mkdir /etc/supervisord.d/

配置相关信息

vim /etc/supervisord.d/project1.conf

示例配置内容

[supervisord] 
strip_ansi = true 

[program:project] 
directory = /data/ai_lab/msf/ComfyUI 
command = /home/username/miniconda3/envs/project_env/bin/python main.py --listen 
autostart = true 
autorestart = true 
user = root 
stdout_logfile = /data/project.log
  1. project_name 必须是唯一的,否则将会出现错乱

  2. directory 填写你启动脚本时的工作目录,如果你使用脚本的绝对目录,那么directory可以不设置

  3. command是执行脚本的命令,不需要使用nohup让其变为后代进程,supervisor会自动将其变为后台进程,command最好是虚拟环境bin目录下的python解释器的绝对路径,否则可能会找错解释器路径,导致程序报错。

  4. autostart 配置为True, supervisor 启动时,任务跟随启动

  5. autorestart 配置为True, 进程不存在时会自动重启, 默认重启3次,想修改重启次数,可以配置startretries, 设置最多重启的次数

  6. user 设置启动任务时所用的用户,supervisor 有必要使用root账号启动,这样才有权限配置其他启动账号

  7. stdout_logfile 配置输出日志,可以将所有进程日志存放在一个好找的文件夹,或者都存放到每一个工程的目录下,但为了方便找,一般统一放在一个目录里。

启动supervisor

supervisord -c /etc/supervisord.conf

设置supervisor开机自启动

sudo systemctl enable supervisor

判断supervisor是否开机自启动

sudo systemctl is-enabled supervisor

supervisorctl管理进程

supervisorctl 是 supervisord 的一个命令行客户端工具,使用supervisorctl可以遍历的对进程进行管理,支持的命令如下

project是示例配置内容中[program:project]的project

supervisorctl status #查看进程状态 
supervisorctl stop project #终止某个进程 
supervisorctl start project #启动某个进程 
supervisorctl restart project #重启某个进程 
supervisorctl reread #更新配置,根据最新的配置启动程序,会启动已经运行的程序 
supervisorctl update #更新配置,重启配置有变化的进程,不会重启那些配置没有变化

参考链接:

https://zhuanlan.zhihu.com/p/264111843

https://github.com/Supervisor/supervisor/issues/85

http://supervisord.org/configuration.html#supervisord-section-values

https://blog.csdn.net/codeswarrior/article/details/107511960

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资料加载中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值