linux使用Supervisor守护进程
Posted 兰陵笑笑苼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux使用Supervisor守护进程相关的知识,希望对你有一定的参考价值。
Supervisor是什么
是Linux/Unix系统下的一个进程管理工具,它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制,
应用场景
- 执行耗时爬虫任务
- 守护队列,以及workman进程
- 需要一直执行的程序
安装Supervisor
linux下直接执行yun安装,方便快捷
yum install -y epel-release && yum install -y supervisor
安装完会生成三个执行程序
supervisortd、supervisorctl、echo_supervisord_conf
- supervisortd:用于管理supervisor本身服务
- supervisorctl:用于管理我们需要委托给superviso工具的服务
- echo_supervisord_conf:用于生成superviso的配置文件
- supervisor的守护进程服务(用于接收进程管理命令)
[root@ad581v8efzsd5 /]# which supervisord
/bin/supervisord
[root@ad581v8efzsd5 /]# which supervisorctl
/bin/supervisorctl
[root@ad581v8efzsd5 /]# which echo_supervisord_conf
/bin/echo_supervisord_conf
安装完启动
#supervisord启动
supervisord -c /etc/supervisord.conf #启动supervisord进程
编写workman被superviso守护
- 找到配置文件
/etc/supervisord.conf - 在最下面添加如下代码
vim /etc/supervisord.d/redis.conf
[program:dd_thinkphp_workman]
command= /usr/local/php/bin/php think worker:server ; 被监控进程
directory= /data/wwwroot/thinkphp6; 项目地址(必填)
;process_name=%(process_num)02d
;numprocs=1 #启动几个进程
autostart=true ;随着supervisord的启动而启动
autorestart=true ;自动启动
startsecs=1 ;程序重启时候停留在runing状态的秒数
startretries=10 ;启动失败时的最多重试次数
redirect_stderr=true ;重定向stderr到stdout
stdout_logfile= /data/wwwlogs/dd_thinkphp_workman.log; stdout文件,日志文件
- 使用super启动workman
#杀掉supervisord
ps -ef|grep supervisord
root 23164 1 0 10:47 ? 00:00:00 /usr/bin/python /bin/supervisord -c /etc/supervisord.conf
root 27549 27402 0 11:07 pts/2 00:00:00 grep --color=auto super
kill -9 23164
#重新启动supervisord使其重新加载配置文件,supervisord默认会把workman拉起来
supervisord -c /etc/supervisord.conf
- 其他命令
supervisorctl status workman #workman状态
supervisorctl stopworkman #停止workman
supervisorctl start workman #启动workman
supervisorctl restart workman #重启workman
supervisorctl reoload workman #重载workman
管理supervisorctal
supervisorctl status all #查看所有进程状态
supervisorctl stop all #停止所有进程
supervisorctl start all #启动所有进程
supervisorctl restart all #重启所有进程
supervisorctl reoload all #重载所有进程
总的来说是非常简单的,像一些队列啊,workman这些不能挂掉,就守护起来就行
以上是关于linux使用Supervisor守护进程的主要内容,如果未能解决你的问题,请参考以下文章