Python Supervisor是什么,如何安装使用?
Admin 2022-10-27 群英技术资讯 267 次浏览
Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
Supervisor 支持 Linux 和 Mac,不支持 Windows
本文系统为: centos,supervisor==4.2.4
pip3 install supervisor
登录后复制
安装完成后,在Python bin目录
下面会有这样几个文件。
ls /usr/local/Python38/bin
echo_supervisord_conf
supervisorctl
supervisord
登录后复制
注:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。
1.首先建个目录,存放配置文件:mkdir supervisord
。
echo_supervisord_conf > supervisord/supervisord.conf
登录后复制
若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。
2.创建子进程配置文件路径
mkdir -p supervisor/conf.d
登录后复制
后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。
3.修改配置文件
vim supervisord/supervisord.conf
登录后复制
将最后一部分改为
[inclue]
# 因为我这里是放在root用户目录下,也可以放其它目录
files=/root/supervisord/conf.d/*.conf
登录后复制
1.启动 supervisord
supervisord -c supervisord/supervisord.conf
登录后复制
这样就把supervisord
启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。
查看版本
supervisord -v
登录后复制
2.编写简单的 Shell 脚本
vim supervisord/test.sh
登录后复制
内容如下
#!/bin/bash
while :
do
echo `date '+%Y-%m-%d %H:%m:%S'`
sleep 1
done
登录后复制
简单运行,Ctrl + C
退出
3.创建子进程配置文件
vim supervisor/conf.d/test.conf
登录后复制
test.conf
内容如下:
[program:test]
command=sh /root/supervisord/test.sh
priority=999 ; 相对启动优先级,数值越小越优先,默认为999
autostart=true ; 在supervisor启动时自动启动,默认为true
autorestart=true ; 在意外退出时重新启动,默认为true
startsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1
startretries=3 ; 尝试启动的最大次数,默认为3
exitcodes=0,2 ; 进程的预期退出代码列表,默认为0
stopsignal=QUIT ; 终止进程的信号,默认为TERM
stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10
user=root ; 在某用户下设置uid来启动程序,默认不切换用户
redirect_stderr=true ; 是否重定向stdout和stderr,默认为false
stdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTO
stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MB
stdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10
登录后复制
其实只需要配置3个参数,其它不用管:
command=sh /root/supervisord/test.sh
: 我们的子进程启动命令;stdout_logfile=/tmp/supervisor.stdout.log
: 日志;program:test
:进程名为test
,如果进程哪一天想停止启动等,需要进程名;目前文件目录结构是这样的:
yum install tree
tree supervisord
supervisord
├── conf.d
│ └── test.conf
├── supervisord.conf
└── test.sh
登录后复制
4.重新读取配置并更新子进程
因为我们的supervisord
已经启动了,可以通过ps -ef | grep supervisord.conf
查看。添加了子进程配置文件,需要把它重新加载进来:
先进入supervisord
目录: cd supervisord
,否则执行下面命令会有问题。
supervisorctl reread
登录后复制
登录后复制
再次查看进程状态
supervisorctl status
登录后复制
登录后复制
结果:
test RUNNING pid 30278, uptime 1:29:41
名为test
的这个进程已经作为守护进程在后台运行,我们来kill掉他:
kill 30278
登录后复制
再执行supervisorctl status
,会发现状态立马由starting
,不一会变成running
,那么supervisord
的作用已经很明显了,可以自动帮我们自动监控任务。
注:对于子进程的添加、删除、启动、停止相关命令,见附录。
web界面没多大用处,就是如果想启动、暂停进程是,不需要敲命令而已。
vim supervisord.conf
登录后复制
取消注释
[inet_http_server]
port=*:9001 ; 此处改为*便于调试
登录后复制
重启 supervisord
supervisorctl reload
登录后复制
登录后复制
浏览器访问:linux_ip:9001.
新增某配置文件,重新加载
supervisorctl reread
登录后复制
登录后复制
改动某配置文件,重新加载
supervisorctl update
登录后复制
重启 supervisord
supervisorctl reload
登录后复制
登录后复制
查看所有进程状态
supervisorctl status
登录后复制
登录后复制
查看指定进程状态
supervisorctl status <name>
登录后复制
启动所有子进程
supervisorctl start all
登录后复制
启动指定子进程
supervisorctl start <name>
登录后复制
重启所有子进程
supervisorctl restart all
登录后复制
重启指定子进程
supervisorctl restart <name>
登录后复制
停止所有子进程
supervisorctl stop all
登录后复制
停止指定子进程
supervisorctl stop <name>
登录后复制
添加子进程到进程组
supervisorctl add <name>
登录后复制
从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才能重新运行该进程
supervisorctl reomve <name>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python实现 MK检验,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
最近工作中遇到了matplotlib保存图片坐标轴不完整的问题,所以这篇文章主要给大家介绍了关于python matplotlib画图时坐标轴重叠显示不全和图片保存时不完整问题的解决方法,需要的朋友可以参考下
这篇文章主要介绍了Python Http发送请求浅析,文章主要通过从requests、aiohttp、httpx三个接口请求展开详情,需要的朋友可以参考一下文章具体详细内容
这篇文章主要介绍了推荐五个常用的python图像处理库,文章基于python的相关内容分享图像处理库,具有一定的参考价值,需要的小伙伴可以参考一下
本文将和大家一起了解什么是上下文管理器 和 Python 的 with 语句,以及如何完成自定义。然后扩展 Timer 以便它也可以用作上下文管理器,感兴趣的可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008