使用Supervisor管理进程
2018-10-22 17:11
826 查看
1. Superivisor简介:
Supervisor是一个C/S系统,它允许用户在类UNIX系统上监控和管理一系列的进程。你可以把一个进程以Daemon的形式用Supervisor来管理。
2. 安装:
使用pip来安装Supervisor:
[root@test1 ~]# pip install supervisor
如果CentOS系统中没用安装pip,可以通过如下命令安装pip:
[root@test1 ~]# yum -y install python-pip
3. 配置文件:
Supervisor的配置文件需要手动执行命令来生成,如下:
[root@test1 ~]# echo_supervisord_conf > /etc/supervisord.conf
4. 常用的配置项:
command=/bin/cat ---- 启动程序时执行的命令; directory=/tmp ---- 执行目录,若有/home/test/test1.py,将directory设置成/home/test,则command只需设置成python test1.py。否则command必须设置成绝对路径; process_name=%(program_name)s ---- 进程启动,使用program name作为进程名,默认值; autostart=true ---- 随Supervisor启动一起启动; startsecs=1 ---- 延时启动,默认为1; startretries=3 ---- 启动失败时的重试次数,默认为3; user=root ---- 以root身份运行程序; priority=999 ---- 优先级。值越高,最后启动,最先被关闭,默认值999。
5. 命令:
Supervisor有两个可执行程序 :supervisord 和 supervisorctl。
supervisord用来依据配置文件的策略管理后台守护进程;
supervisorctl管理员用于向后台守护进程发送“启动/重启/停止”等指令。
6. 一个例子,使用Supervisor管理一个Python Flask程序hello.py:
[program:flasky] directory=/opt/flasky/ command=/opt/flasky/venv/bin/python hello.py runserver --host 192.168.1.101 -p 8080 autostart=true startsecs=10 startretries=2 user=root stderr_logfile=/tmp/flasky-error.log stdout_logfile=/tmp/flasky-error.log
7. 启动Supervisord:
[root@test1 ~]# /usr/bin/supervisord -c /etc/supervisord.conf
8. 查看进程状态:
[root@test1 ~]# /usr/bin/supervisorctl status flasky STARTING [root@test1 ~]# /usr/bin/supervisorctl status flasky RUNNING pid 46778, uptime 0:00:10 [root@test1 ~]# /usr/bin/supervisorctl status flasky RUNNING pid 46778, uptime 0:00:13
9. Supervisorctl管理命令:
supervisorctl status ---- 查看supervisor管理进程的状态; supervisorctl stop programname ---- 用来关闭某个进程,programname指上例中的flasky; supervisorctl start programname ---- 用来启动某个进程; supervisorctl restart programname ---- 用来重启某个进程; supervisorctl stop all ---- 关闭所有的进程; supervisorctl reload ---- 停止所有进程,载入最新的配置文件,并根据最新的配置启动、管理进程; supervisorctl update ---- 根据最新的配置文件,启动新配置的进程或重启配置有变化的进程,没有改动过的进程不会受到影响; supervisorctl shutdown ---- 关闭supervisor服务。
曾经有一次面试,面试官提问:“有一个脚本,如何让它在开机之后一小时的时候开始执行?”
我答:“在脚本开头加上‘sleep 3600’,再把脚本加入rc.d目录开机启动。”
其实,用Supervisor就可以更合理地实现。
相关文章推荐
- 进程管理工具supervisor简介及使用技巧
- 使用Supervisor管理Linux进程
- 使用supervisor管理进程
- Ubuntu/CentOS使用Supervisor管理进程
- Python 进程管理工具 Supervisor 使用教程
- 使用 supervisor 管理进程
- 使用 supervisor 管理进程
- Python使用Supervisor来管理进程的方法
- 使用 supervisor 管理进程
- linux 使用supervisor来管理进程
- tornado 使用supervisor管理进程,使用nginx做负载均衡
- 使用supervisor 管理python进程
- 使用 supervisor 管理进程
- 【Scrapy学习】 使用supervisor对scrapyd进程进行监控和管理
- Linux下进程管理工具Supervisor的安装配置和基本使用
- 在Docker里使用(支持镜像继承的)supervisor管理进程(转)
- Python 进程管理工具 Supervisor 使用教程
- docker之使用supervisor管理多个进程
- 使用 supervisor 管理进程
- python进程管理工具supervisor使用实例