supervisor的安装与使用

supervisor是什么?

supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

supervisor只能监控前台程序, 如果你的程序是通过fork方式实现的daemon服务,则不能用它监控。
其实就相当于守护进程了,确保某些服务保持启动的状态,supervisor完全可以做到,而且不用写脚本,不用去循环判断了。

安装supervisor(yum安装,基于centos)

yum install epel-release
yum install supervisor

文件配置

安装完成后,/etc/ supervisord.conf文件,看一下他的include文件地址,就像nginx的include一样,配置文件,我们单独创建配置:
在这里插入图片描述
我们可以看到,include指向了supervisord.d文件夹,一查看,还真有这个文件夹,我们直接在这个文件夹下创建xxx.ini文件好了,其实也可以自己指定include的路径,也可以指定文件类型xxx.conf,根据自己需要吧,这里我还是按照它指定的好了。
在这里插入图片描述
创建一个owh.ini文件:
在这里插入图片描述
内容如下:

[program:still_write] ; 程序名称,在 supervisorctl 中通过这个值来对程序进行一系列的操作
autorestart=True      ; 程序异常退出后自动重启
autostart=True        ; 在 supervisord 启动的时候也自动启动
redirect_stderr=True  ; 把 stderr 重定向到 stdout,默认 false
; environment=PATH="/home/app_env/bin"  ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是使用指定的 virtualenv 环境
command=python /root/test.py  ; 启动命令,与手动在命令行启动的命令是一样的
user=root           ; 用哪个用户启动
directory=/root/  ; 程序的启动目录
stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
stdout_logfile_backups = 20     ; stdout 日志文件备份数
startretries=10               ; 启动失败时的最多重试次数
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile = /data/logs/usercenter_stdout.log

创建一个/root/test.py #也就是保证test.py进程一直启动,该进程会一直写文件,你可以时刻查看该文件的内容:cat /root/a.txt

import time
while True:
    a=open('a.txt','a')
    a.write('1')
    a.close()
time.sleep(2)
创建一个输出log文件夹:
mkdir –p /data/logs

关于配置文件的全部信息解释,请参照下面这个地址,解释的很全面:
https://www.cnblogs.com/xuezhigu/p/7660203.html

管理多个进程

如果想要监控多几个进程,则直接加多一个[program:Pid_name]即可,这里特别说明一下nginx的监控,因为nginx默认启动是后台的,所以这里需要特别设置一下nginx以前台的方式启动,这样supervisor才能够实时监控:
command=/home/packages/nginx/sbin/nginx -g ‘daemon off;’
配置信息如下:
在这里插入图片描述

启动、测试

supervisord -c /etc/supervisord.conf #启动supervisor服务
我们可以看到,在/root目录生成了一个a.txt文件,而且会一直增加数据,我们可以ps ax|grep python 查看一下进程:
在这里插入图片描述
我们发现,已经存在这个进程,如果此时kill掉这个进程,还是会再次启动,经过验证,没有问题。
nginx也在的。
在这里插入图片描述

web界面操作

在/etc/supervisord.conf 配置文件中,找到inet_http_server,改成你的IP,下面的账号和密码随意设置
在这里插入图片描述
之后重新加载配置文件使其生效:
supervisorctl update
网页登录:192.168.1.5:9001 #登录之前记得关闭防火墙,或者开放9001端口
输入账号密码:
在这里插入图片描述
登录后的页面如下:
在这里插入图片描述
在这里可以通过页面上重启或者停止进程,也可以清除相应进程的log信息

supervisorctl管理命令

查看任务状态

supervisorctl status #查看所有服务状态
在这里插入图片描述
第一列表示进程名称,也就是上面配置文件定义的头部分:
在这里插入图片描述 在这里插入图片描述
第二列表示运行状态,第三列表示进程号,第四列表示运行时间
supervisorctl status still_write #查看单个进程状态
在这里插入图片描述

启动、停止、重启任务

启动、停止单个任务
supervisorctl stop|start nginx
在这里插入图片描述
启动、停止所有任务
supervisorctl stop|start all
在这里插入图片描述
重启单个、或者所有任务
supervisorctl restart all|nginx
在这里插入图片描述

重新加载配置文件

如果配置文件修改,比如上面的owh.ini文件,比如改变了服务,或者新增了服务,需要重新加载文件信息:
supervisorctl update :配置文件修改后可以使用该命令加载新的配置
supervisorctl reload: 重新启动配置中的所有程序
此时无需重启服务,配置文件的服务将会生效,我发现,这两个命令都可以做到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值