进程管理工具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的方式把这些被管 ...
随机推荐
- [原]Docker-issue(1) image name 显示为 <none>
问题:今天发现重新上传新的image的时候覆盖了原来的镜像后,REPOSITORY 就变为了 <none> ,如下图 解决办法: 使用tag重新命名image 问题解决:
- vb编程中的选择结构语句的写法
1996年,Bohra和Jacopin提出了结构化算法的3中种基本结构:顺序结构.选择结构和循环结构 目前已经得到证明,无论多么复杂的程序,都是由上面的3种基本结构中的一种或者多种的组合构成 在此笔者 ...
- Python __all__变量用法
Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现. 1.在普通模块中使用时,表示一个模块中允许哪些属性可以被导 ...
- 萌新 学习 vuex
vuex官网文档 https://vuex.vuejs.org/zh-cn/ 注: Mutation事件使用commit触发, Actions事件使用dispatch触发 安装 npm install ...
- 怎样理解JAVA的“构造方法”和“主方法”
在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法.主方法是类的入口点,它定义了程序从何处开始: 主方法提供对程序流向的控制,Java编译器通过主方法来执行程序.那么,下面一起来看一下关 ...
- Tensorflow 的saved_model模块学习
saved_model模块主要用于TensorFlow Serving.TF Serving是一个将训练好的模型部署至生产环境的系统,主要的优点在于可以保持Server端与API不变的情况下,部署新的 ...
- gcd最大生成树模板
出处: ACM International Collegiate Programming Contest, Egyptian Collegiate Programming ContestArab Ac ...
- SetupFactory 制作安装包
SetupFactory9.0.3.0Trial汉化破解版+使用教程 https://download.csdn.net/download/u010188178/10652645
- Chrome扩展程序——TabCopy:一键复制网页标题和网址
Chrome扩展程序——TabCopy:一键复制网页标题和网址 - Erik_ly的博客 - CSDN博客 https://blog.csdn.net/u012318074/article/detai ...
- laravel发布订阅
1.php artisan make:command RedisSubscribe 在app console中会生成RedisSubscribe.php文件 <?php namespace Ap ...