|
一、简介
Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
详细介绍查阅:Supervisor Introduction
二、安装
Supervisor 支持 Linux 和 Mac,不支持 Windows
本文系统为:安装完成后,在Python下面会有这样几个文件。- ls /usr/local/Python38/bin
- echo_supervisord_conf
- supervisorctl
- supervisord
复制代码 注:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。
三、创建配置文件
1.首先建个目录,存放配置文件:。- 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
复制代码 将最后一部门改为- [include]
- # 因为我这里是放在root用户目录下,也可以放其它目录
- files=/root/supervisord/conf.d/*.conf
复制代码 四、初试
1.启动 supervisord- supervisord -c supervisord/supervisord.conf
复制代码 这样就把启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。
检察版本2.编写简单的 Shell 脚本内容如下- #!/bin/bash
- while :
- do
- echo `date '+%Y-%m-%d %H:%m:%S'`
- sleep 1
- done
复制代码 简单运行,退出
3.创建子进程配置文件- vim supervisor/conf.d/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
复制代码 : 日志;
- :进程名为,如果进程哪一天想停止启动等,需要进程名;
目前文件目录结构是这样的:- yum install tree
- tree supervisord
- supervisord
- ├── conf.d
- │ └── test.conf
- ├── supervisord.conf
- └── test.sh
复制代码 4.重新读取配置并更新子进程
因为我们的已经启动了,可以通过- ps -ef | grep supervisord.conf
复制代码 检察。添加了子进程配置文件,需要把它重新加载进来:
先进入目录:,否则执行下面命令会有问题。再次检察进程状态结果:- test RUNNING pid 30278, uptime 1:29:41
复制代码 名为的这个进程已经作为守护进程在后台运行,我们来kill掉他:再执行,会发现状态立马由,不一会酿成,那么的作用已经很明显了,可以自动帮我们自动监控任务。
注:对于子进程的添加、删除、启动、停止相关命令,见附录。
五、Web 界面
web界面没多大用处,就是如果想启动、暂停进程是,不需要敲命令而已。取消注释- [inet_http_server]
- port=*:9001 ; 此处改为*便于调试
复制代码 重启 supervisord浏览器访问:linux_ip:9001.
附录:supervisorctl 常用命令
新增某配置文件,重新加载改动某配置文件,重新加载重启 supervisord检察所有进程状态检察指定进程状态- supervisorctl status <name>
复制代码 启动所有子进程启动指定子进程- supervisorctl start <name>
复制代码 重启所有子进程- supervisorctl restart all
复制代码 重启指定子进程- supervisorctl restart <name>
复制代码 停止所有子进程停止指定子进程- supervisorctl stop <name>
复制代码 添加子进程到进程组从进程组移除子进程,需要先stop。注意:移除后,需要使用reread和update才气重新运行该进程- supervisorctl reomve <name>
复制代码 欢迎访问我的个人博客,听听我的故事。
到此这篇关于Python进程管理神器Supervisor的文章就介绍到这了,更多相关Python Supervisor进程管理内容请搜索趣UU以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣UU!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|