这篇教程Python进程管理神器Supervisor详解写得很实用,希望能帮到您。
一、简介Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启 详细介绍查阅:Supervisor Introduction
二、安装Supervisor 支持 Linux 和 Mac,不支持 Windows 本文系统为: centos,supervisor==4.2.4 安装完成后,在Python bin目录 下面会有这样几个文件。 ls /usr/local/Python38/binecho_supervisord_confsupervisorctlsupervisord 注:由于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 将最后一部分改为 [include]# 因为我这里是放在root用户目录下,也可以放其它目录files=/root/supervisord/conf.d/*.conf
四、初试1.启动 supervisord supervisord -c supervisord/supervisord.conf 这样就把supervisord 启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。 查看版本 2.编写简单的 Shell 脚本 内容如下 #!/bin/bashwhile : do echo `date '+%Y-%m-%d %H:%m:%S'` sleep 1done 简单运行,Ctrl + C 退出 3.创建子进程配置文件 vim supervisor/conf.d/test.conf test.conf 内容如下:
[program:test]command=sh /root/supervisord/test.shpriority=999 ; 相对启动优先级,数值越小越优先,默认为999autostart=true ; 在supervisor启动时自动启动,默认为trueautorestart=true ; 在意外退出时重新启动,默认为truestartsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1startretries=3 ; 尝试启动的最大次数,默认为3exitcodes=0,2 ; 进程的预期退出代码列表,默认为0stopsignal=QUIT ; 终止进程的信号,默认为TERMstopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10user=root ; 在某用户下设置uid来启动程序,默认不切换用户redirect_stderr=true ; 是否重定向stdout和stderr,默认为falsestdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTOstdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MBstdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10 其实只需要配置3个参数,其它不用管: command=sh /root/supervisord/test.sh : 我们的子进程启动命令;stdout_logfile=/tmp/supervisor.stdout.log : 日志;program:test :进程名为test ,如果进程哪一天想停止启动等,需要进程名;
目前文件目录结构是这样的: yum install treetree supervisordsupervisord├── conf.d│ └── test.conf├── supervisord.conf└── test.sh 4.重新读取配置并更新子进程 因为我们的supervisord 已经启动了,可以通过ps -ef | grep supervisord.conf 查看。添加了子进程配置文件,需要把它重新加载进来: 先进入supervisord 目录: cd supervisord ,否则执行下面命令会有问题。 再次查看进程状态 结果: test RUNNING pid 30278, uptime 1:29:41
名为test 的这个进程已经作为守护进程在后台运行,我们来kill掉他: 再执行supervisorctl status ,会发现状态立马由starting ,不一会变成running ,那么supervisord 的作用已经很明显了,可以自动帮我们自动监控任务。 注:对于子进程的添加、删除、启动、停止相关命令,见附录。
五、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进程管理内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com! Python的functools模块使用及说明 手把手教你利用Python创建一个游戏窗口 |