Supervisor

醉酒当歌 提交于 2020-02-24 13:52:07

Supervisor是Linux下用python写的一个进程监控程序,它的出现是为了满足以下需求,假设我有一个进程需要每时每刻的跑,但是这个进程又可能由于各种原因有可能中断,当进程中断的时候我希望能够自动重新启动它,此时,就是这个工具的用武之地.

安装:

需要基于Python环境,安装前可能需要安装以下两个包

sudo apt-get install -y python-dev

sudo apt-get install -y libevent-dev

安装完成后使用

sudo pip install supervisor

配置:

首先在etc下新建一个supervisord.conf文件,

touch supervisord.conf

需要修改权限,最简单的是chmod 777

chmod 777 supervisord.conf

然后生成配置文件

echo_supervisord_conf > /etc/supervisord.conf

supervisord -c /etc/supervisord.conf

测试:

先写个简单脚本

 #! /usr/local/bin/python
  2 import time
  3 
  4 time.sleep(120)
  5 print 'hello'

赋予执行权限

chmod a+x hello.py

修改配置文件

vim /etc/supervisord.conf

 

[program:hello]
 12 command=python /home/xiao/test/hello.py
 13 autorestart=true
 14 directory=/home/xiao/test/
 15 redirect_stderr=true

 

 

执行:

Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:

supervisord,初始启动Supervisord,启动、管理配置中设置的进程。

supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。

supervisorctl start programxxx,启动某个进程

supervisorctl restart programxxx,重启某个进程

supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。

supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。

supervisorctl status 查看监控了什么程序

注意programxxx之间不要空格,例如programhello

 

可视化操作:

在conf文件里有个unix_http_server在里面进行修改

输入http://localhost:9001

 

ps -ef | grep python  用这个查看进程信息

 

配置文件

键入: vim /etc/supervisord.conf

在文件的末尾添加一个storm ui程序监控,配置如下:

;storm ui

[program:ui]

command=/usr/storm/storm/ui-sv.sh ;被监控程序指定的运行脚本

directory=/usr/storm/storm ;被监控程序运行的路径

autostart=false ;是否随supervisord进程启动而启动,包括reloadconf

autorestart=true ;被监控程序异常中断是否自动重启

startsecs=5 ;被监控程序启动时持续时间

startretries=5 ;被监控程序启动失败重试的次数

redirect_stderr=true ;是否重定向std err

stdout_logfile=/tmp/ui-sv.log ;stdou 重定向输出文件

stdout_events_enabled=true ;是否允许stdout事件

stopsignal=QUIT ;被监控程序kill的信号

如果command的栏运行的是shell脚本,那么在shell 脚本启动被监控程序时要用exec修饰。例如:

#!/bin/bash

exec /home/scott/install/storm/storm-0.9.0.1/bin/stormnimbus

否则,supervisord停止不了启动的进程.除此之外,shell脚本里不能出现&之类的后台运行符号。

supervisord开机自启动
chkconfig --add supervisord #加为服务
运行ntsysv,选中supervisord启动系统时跟着启动。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!