supervisor-进程管理工具
来源:互联网 发布:sql商务系统开发培训 编辑:程序博客网 时间:2024/06/06 11:19
Supervisord是用Python实现的一款非常实用的进程管理工具,monit和supervisord的一个比较大的差异是supervisord管理的进程必须由supervisord来启动,monit可以管理已经在运行的程序;supervisord还要求管理的程序是非daemon程序,supervisord会帮你把它转成daemon程序,因此如果用supervisord来管理nginx的话,必须在nginx的配置文件里添加一行设置daemon off让nginx以非daemon方式启动。官方文档:http://supervisord.org/index.html
安装
这里我们选择在python2.7虚拟环境里安装,进入虚拟环境,再用pip安装
source virtualENv/pyleus27Env/bin/activate #进入虚拟环境pip install supervisor #安装supervisor
安装完成后会多出两个命令supervisorctl
,supervisord
,也可以这样测试是否安装成功命令行:echo_supervisord_conf
有输出
修改配置文件
创建配置文件
sudo echo_supervisord_conf > /etc/supervisord.conf
vim /etc/supervisord.conf1.在supervisord.conf最后增加: ;hello为指定的服务名称 [program:hello] ;需要执行的命令 ; command = redis-server ; command=python /home/smallfish/hello.py ;用虚拟环境运行 command =/home/rdy/virtualENv/pyleus27Env/bin/python /home/rdy/workspace/healthy_topology/test.py ;supervisor启动的时候是否随着同时启动 autostart=true ;当程序跑出exit的时候,这个program会自动重启 autorestart=true ;程序重启时候停留在runing状态的秒数 startsecs=3 ;捕获标准输出 stdout_logfile=/var/log/test.log2.配置web管理 将[inet_http_server]及后面的地址、用户名、密码的注释去掉 [inet_http_server] ; inet (TCP) server disabled by default port=0.0.0.0:9002 ;用0.0.0.0来允许外网可以访问 username=user ; (default is no username (open server)) password=123123 这样只需在浏览器中通过访问 http://192.168.0.247:9002就可以对服务器的进程进行管理了3.配置以某个目录为配置文件启动目录[include]files = /home/rdy/supervisor-config/*.ini4.开启防火墙端口/sbin/iptables -I INPUT -p tcp --dport 9002 -j ACCEPT/etc/rc.d/init.d/iptables save
test.py文件内容是直接读取beanstalk消息队列的数据存到redis的测试程序
# !/bash/bin/env python# -*- coding: utf-8 -*-__author__ = 'rdy'import redisimport beanstalkdef set_redis_key(key, value): r = redis.Redis(host='192.168.0.62', password='11111@qwe34', port=6379, db=5) # 设值 r.set(key, value)def watch_beanstalk(): beans = beanstalk.Connection(host='192.168.0.62', port=11300) beans.watch('sb') job = beans.reserve() ret = job.body job.delete() c = eval(ret) print(c['mac'], c['alias']) return c['mac'], c['alias']if __name__ == '__main__': r = watch_beanstalk() set_redis_key(r[0], r[1])
部署tornado
[program:api-8000]command=/home/rdy/virtualENv/apiEnv/bin/python /home/project/api/run.py --port=8000autostart=true ; supervisord守护程序启动时自动启动tornadoautorestart=true ; supervisord守护程序重启时自动重启tornadoredirect_stderr=true ; 将stderr重定向到stdoutstdout_logfile = /home/project/api/logs/api-8000.log[program:api-8001]command=/home/rdy/virtualENv/apiEnv/bin/python /home/project/api/run.py --port=8001autostart=true ; supervisord守护程序启动时自动启动tornadoautorestart=true ; supervisord守护程序重启时自动重启tornadoredirect_stderr=true ; 将stderr重定向到stdoutstdout_logfile = /home/project/api/logs/api-8001.log
运行
#指定配置文件运行supervisord -c /etc/supervisord.conf#用默认配置文件运行supervisord#停止全部进程,注:start、restart、stop都不会载入最新的配置文件。supervisorctl stop all#重启(载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程)supervisorctl reload#部分重启(根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启)supervisorctl update
- 注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。
- supervisor是用来跑前台进程的,不能用来跑daemon
Supervisord管理
Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:
* supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
* supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
* supervisorctl start programxxx,启动某个进程
* supervisorctl restart programxxx,重启某个进程
* supervisorctl stop groupworker: ,重启所有属于名为groupworker这个分组的进程(start,restart同理)
* supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
* supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
* supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
打开浏览器输入:http://192.168.0.247:9002, 输入相应用户名和密码,如图:
- supervisor - Python进程管理工具
- supervisor - Python进程管理工具
- supervisor - Python进程管理工具
- supervisor - Python进程管理工具
- 后台进程管理工具---supervisor
- supervisor 进程管理工具
- 【Supervisor】Python 进程管理工具
- supervisor-进程管理工具
- supervisor - Python进程管理工具
- linux进程管理工具supervisor
- supervisor 进程管理工具
- Linux 进程管理工具:supervisor
- Supervisor后台进程管理工具
- Supervisor后台进程管理工具
- Python进程管理工具Supervisor
- Supervisor Supervisor是一个进程管理工具
- Supervisor Unix系统进程管理工具
- CentOS 安装 supervisor 进程管理工具
- js中将json字符串转换为json对象的方法
- Google android的产品线及总体架构
- IntelliJ IDEA 中如何查看一个类的所有继承关系(当前类的所有继承关系图)
- js窗口震动小程序
- codeforces101156L——Super 2048
- supervisor-进程管理工具
- 添加自定义alias命令
- 观察者模式
- CodeForces 585E
- Junit、Assert、内省、Properties类与配置文件的使用
- C/C++的中缀转后缀并求值的实现
- ViewPager 详解(三)---PagerTabStrip与PagerTitleStrip添加标题栏的异同
- Fast-RCNN代码解读(1)
- HDU 1053 Entropy【哈夫曼编码入门题】