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

安装完会生成三个执行程序
supervisortdsupervisorctlecho_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守护

  1. 找到配置文件
    /etc/supervisord.conf
  2. 在最下面添加如下代码
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文件,日志文件
  1. 使用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
  1. 其他命令
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守护进程的主要内容,如果未能解决你的问题,请参考以下文章

linux使用Supervisor守护进程

Supervisor-守护进程工具

Palo通过supervisor进行进程管理

Linux进程守护——Supervisor 使用记录

如何用supervisor守护php-fpm主进程以实现php-fpm的自动重启

Python监控进程状态并实现告警