进程管理工具supervisor的使用
centos 6.5, python 2.6, supervisor 3.3.1;
Linux下后台运行程序通常的做法是用nohub,然后配以进程的检测来实现服务式的操作,但其实有更好的选择supervisor,尤其是在多个程序需要管理时;
安装
yum直接安装的版本比较低,推荐使用Python的包安装工具进行安装:
# pip install supervisor
如果没有pip这个命令就:
# yum install python-pip -y
验证安装:
# supervisord -version
3.3.
配置
生成主配置文件:
# echo_supervisord_conf > /etc/supervisord.conf
修改/etc/supervisord.conf末尾的include段:
# vi /etc/supervisord.conf
[include]
files = /etc/supervisord.d/*.ini
把自己的程序配置放到/etc/supervisord.d/里面:
# mkdir -p /etc/supervisord.d/
# vi /etc/supervisord.d/myapp.ini
[program:myapp]
command=/bin/sh /bin/myapp.sh #程序启动命令
autostart=false #是否随supervisord启动
autorestart=false #退出后是否自动重启,可选unexpected表示异常退出时才自动重启
user=root #启动用户
redirect_stderr=false #是否把stderr重定向到stdout
stdout_logfile=/var/log/myapp.stdout #stdout重定向到文件
stderr_logfile=/var/log/myapp.stderr #stderr重定向到文件
这里只写了常用的配置,更多可参考/etc/supervisord.conf中的例子;
下面是程序myapp.sh的内容:
# cat /bin/myapp.sh
#!/bin/sh
n=
while true
do
echo myapp $n
let n++
sleep
done
使用
启动服务(可能会有警告说用了root用户,配置文件不是指定的而是搜索到的,没有影响):
# supervisord
使用命令supervisorctl可以进入supervisor的客户端shell,支持自动补全,输入help查看都有那些命令可用:

也可以用supervisorctl+cmd不进入shell进行操作:

下面介绍常用的命令:
reload 重启supervisord服务
shutdow 停止supervisord服务
maintail [-30/-f] 类似tail命令的方式查看服务进程的控制台输出
status 列出所管理程序的状态
start/stop/restart myapp 启动/停止/重启指定程序
pid 服务进程ID
pid myapp 指定程序的进程ID
tail [-30/-f] myapp 类似tail命令的方式查看指定程序的控制台输出
tips: 如果是Python程序,会发现用print打印的内容supervisorctl tail看不到,原因是缓存,把配置中的command改为python -u myapp.py即可;
分组
程序较多时可以用supervisorctl start all来统一操作,但如果程序较多但又不能统一操作呢?答案是分组,可以统一操作的分到一个组;
分组是在配置了program的基础上进行的,根据上节的内容,假设配置了两个program:
[program:myapp1]
[program:myapp2]
来把这两个配置为一个组app:
# vi /etc/supervisord.d/app.ini
[group:app]
programs=myapp1,myapp2
在supervisor的shell中操作分组:

tips:分组后,单个操作时需要带上组名:supervisorctl tail app:myapp1;
over
进程管理工具supervisor的使用的更多相关文章
- 进程管理工具supervisor
1. 简介 supervisor有两个组件:supervisord和supervisorctl,组成了client/server结构. supervisord负责读入配置文件,然后supervisor ...
- Linux进程管理工具Supervisor的安装配置
目录 Linux进程管理工具Supervisor的安装配置 简介 安装Python包管理工具 安装Supervisor 配置 配置文件参数说明 配置进程管理 启动supervisor 控制进程 交互终 ...
- Linux进程管理工具——supervisor
介绍 Supervisord是用Python实现的一款非常实用的进程管理工具 安装 这里用源码 supervisor-.tar.gz .tar.gz cd supervisor- sudo pytho ...
- Python 进程管理工具 Supervisor 使用教程
Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上.Supervisor 官方版目前只能运行在 Python 2 ...
- linux 使用进程管理工具 supervisor
1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3 ...
- 进程管理工具 Supervisor
要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 n ...
- 进程管理工具Supervisor(一)简介与使用
Supervisor是用Python开发的一套client/server架构的进程管理程序,能做到开机启动,以daemon进程的方式运行程序,并可以监控进程状态等等. linux进程管理方式有传统的r ...
- python进程管理工具Supervisor
一.Supervisor简单介绍 supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与lau ...
- 进程管理工具Supervisor(二)Events
supervisor可以当做一个简单的进程启动.重启.控制工具使用,也可以作为一个进程监控框架使用,作为后者,需要使用supervisor的Events机制. Event Listeners supe ...
- Linux进程管理工具Supervisor
简述 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这些被管 ...
随机推荐
- Visual Studio 2010 VS IDE 编辑界面出现绿色的点 去掉绿色的空格点
Visual Studio 2010 VS IDE 编辑界面出现绿色的点 去掉绿色的空格点 Vs乱按一顿忽然出现一堆绿色的点,我去好难看,还不知道什么鬼,查了查其实就是个 每个点表示一个空格 让他显 ...
- Spring AOP @AspectJ进阶
@AspectJ可以使用切点函数定义切点,我们还可以使用逻辑运算符对切点进行复核运算得到复合的切点,为了在切面中重用切点,我们还可以对切点进行命名,以便在其他的地方引用定义过的切点.当一个连接点匹配多 ...
- 对于已经添加引用,还找不到类型或名字空间的错误及svn客户端清除用户帐号密码
1 已经添加过引用,却找不到类型或名字空间. 可以看下项目的的.net framework版本是否一致. 项目(例如类库项目)右键(vs解决方案资源管理器)——>属性——>应用程序——&g ...
- 在php cli下可以使用 STDIN 来实现标准输入
简单的例子: echo "请输入一个数字:"; $num = trim(fgets(STDIN)); echo "请再输入一个数字:"; $num1 = ...
- hello 2019 D
一开始sb了考虑总的因子疯狂T,做题太少了...没意识到会有辣么多因子... 神仙说1e9以内的最多的就有800个因子的了... 然后我们可以考虑质因子 我觉得已经说得很明白了... 唔逆元好像exg ...
- QT下的贪吃蛇
QT写的贪吃蛇,学习于https://www.devbean.net/2012/12/qt-study-road-2-snake-1/ 建议就学习一下开发思想,开发游戏还是用专门的编译器. 多加了墙, ...
- DCL并非单例模式专用
我相信大家都很熟悉DCL,对于缺少实践经验的程序开发人员来说,DCL的学习基本限制在单例模式,但我发现在高并发场景中会经常遇到需要用到DCL的场景,但并非用做单例模式,其实DCL的核心思想和CopyO ...
- 【Swing/文本组件】定义自动换行的文本域
文本域组件:Swing中任何一个文本域(JTextArea)都是JTestArea类型的对象.常用的构造方法如下 public JTextArea() public JTextArea(String ...
- An overview of gradient descent optimization algorithms
原文地址:An overview of gradient descent optimization algorithms An overview of gradient descent optimiz ...
- 我了解到的新知识之--GDPR
2018年5月25日GDPR正式实施,但是一直也是一知半解,今天偶然翻看到一篇企业撰写的关于GDPR的公众号文章,随即去网络上搜索了以下. 大家可以参考如下链接连接过于GDPR的细节,GDPR包括序言 ...