Supervisor使用说明
Supervisor是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程。它可以同时启动,关闭多个进程,使用起来特别的方便。
1.组成部分
supervisor 主要由两部分组成:
supervisord(server 部分):主要负责管理子进程,响应客户端命令以及日志的输出等;
supervisorctl(client 部分):命令行客户端,用户可以通过它与不同的 supervisord 进程联系,获取子进程的状态等。
2.安装
可以直接使用 pip 安装:
pip install supervisor
3.配置
安装完成之后,可以运行 echo_supervisord_conf 生成默认的配置文件:
echo_supervisord_conf > supervisord.conf
然后可以通过 supervisord 命令启动 supervisord.
supervisord -c supervisord.conf

我们可以看到 supervisord 已经被启动了, 然后进入 supervisorctl 的 shell 界面。
$ supervisorctl
supervisor> status
supervisor>
由于目前没有添加任何需要管理的进程,所以 status 没有输出人和结果,接下来我们添加一个需要管理的进程 (以启动一个uwsgi程序为例子):
supervisord.conf文件中添加如下内容
[program:uwsgi]
command=/export/servers/Python2.7/bin/uwsgi /export/servers/nginx/conf/uwsgi/Python_20160906.ini ; 启动命令
stdout_logfile=/tmp/uwsgi_out.log ; stdout 日志输出位置
stderr_logfile=/tmp/uwsgi_err.log ; stderr 日志输出位置
autostart=true ; 在 supervisord 启动的时候自动启动
autorestart=true ; 程序异常退出后自动重启
startsecs=10 ; 启动 10 秒后没有异常退出,就当作已经正常启动
然后运行以下命令更新配置并启动进程:
$ supervisorctl reread (只更新配置文件)
uwsgi: available
$ supervisorctl update (只启动有改动的进程)
uwsgi: added process group
$ supervisorctl status
uwsgi RUNNING pid 266077, uptime 0:08:13
我们看到 uwsgi 已经被成功启动了。你可以使用不同的命令来控制进程的启动和关闭。
$ supervisorctl stop uwsgi
uwsgi: stopped
$ supervisorctl start uwsgi
uwsgi: started
$ supervisorctl restart uwsgi
uwsgi: stopped
uwsgi: started
把所有的配置文件都放在 supervisord.conf 并不是个好主意,一旦管理的进程过多,就很麻烦。所以一般都会 新建一个目录来专门放置进程的配置文件,然后通过 include 的方式来获取这些配置信息
[include]
files = /tmp/conf.d/*.conf
然后在目录 /tmp/conf.d 下新建一个配置文件 celery.conf, 配置信息与上面的一致,效果 是一样的。
4.命令详解
supervisord: 初始启动Supervisord,启动、管理配置中设置的进程;
supervisorctl stop(start, restart) xxx,停止(启动,重启)某一个进程(xxx);
supervisorctl reread: 只载入最新的配置文件, 并不重启任何进程;
supervisorctl reload: 载入最新的配置文件,停止原来的所有进程并按新的配置启动管理所有进程;
supervisorctl update: 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启;
Supervisor使用说明的更多相关文章
- supervisor简要使用说明
安装方法(之一) pip install supervisor 主要组件 supervisord: 用于控制启用和退出子进程,记录子进程的标准输出和标准错误输出. supervisorctl: she ...
- Supervisor (进程管理利器) 使用说明 - 运维笔记
一.Supervisor简单介绍supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与laun ...
- Django与supervisor 管理进程
1.前言 在Django项目中,我们需要用到一些独立于Django框架外的脚本.这样一些脚本可能需要独立的持续运行,且具有很强的可维护性,这个时候supervisor就可以排上用场了. 基于pytho ...
- linux下使用supervisor启动.net core mvc website的配置
发布好的asp.net core mvc项目, 如果想在window或linux下的以控制台程序启动的话,可以用下面的命令 dotnet MyProject.dll --urls="http ...
- 守护进程--Supervisor
01,介绍 02,安装部署 yum install python-setuptoolseasy_install supervisor 03,使用说明 supervisor安装成功之后,没有提供默认的配 ...
- 使用Supervisor管理Django应用进程
官方文档 1.安装 pip install supervisor 2.使用说明 2.1 查看默认配置 echo_supervisord_conf 一般情况下,不需要去修改默认配置,而是将默认配置重定 ...
- Atitit.项目修改补丁打包工具 使用说明
Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...
- asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)
概述 本文目的是搭建三台asp.net core 集群, 并配上 nginx做负载均衡 首先准备要运行的源码 http://pan.baidu.com/s/1c20x0bA 准备三台服务器(或则虚 ...
- 进程监控工具supervisor 启动Mongodb
进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的cl ...
随机推荐
- ORACLE数据库链接
在ORACLE里面,远程数据访问,像查询.更新等可以通过Database Link来实现.数据库连接需要在建立Database Link的两台机子上都运行Oracle Net(以前叫SQL*NET 和 ...
- js按位运算符及其妙用
大多数语言都提供了按位运算符,恰当的使用按位运算符有时候会取得的很好的效果. 在我看来按位运算符应该有7个: 1.& 按位与 &是二元运算符,它以特定的方式的方式组合操作数中对应的位, ...
- CSS样式中常用的字体名称
css中引入字体: @font-face { font-family: "AncientWar"; src: url('style/css/fonts/AncientWar.ttf ...
- SSH反向连接及Autossh
参考文章 http://www.freeoa.net/osuport/netmanage/autossh-useage-refer_2831.html 接触Linux恐怕对SSH再熟悉不过了,还有sc ...
- API函数详解:API大全总目录(按字母排列)
API函数详解 http://www.feiesoft.com/api/api.html
- 第一章 C++基本认识
1.使用visual studio时让程序暂停,在return前加上这个: char response; std::cin >> response; 2.c++程序开发流程 3.变量名的命 ...
- javase学习小结一
输出格式: int num=12345; System.out.printf("%7d",number);输出结果为:空格空格12345 System.out.println(&q ...
- HTML中的表单
1.HTML中表单元素的基本概念 HTML表单是HTML元素中较为复杂的部分,表单往往和脚本,动态页面,数据处理等功能相结合,因此是制作动态网站很重要的内容. 表单一般用来收集用户的输入信息 2.表单 ...
- Swing小技巧总结
1. 使JDialog位于屏幕的中央 public void setToScreenCenter(JDialog jd) { Dimension screenSize = Tool ...
- 使用最小堆优化Dijkstra算法
OJ5.2很简单,使用priority_queue实现了最小堆竟然都过了OJ……每次遇到relax的问题时都简单粗暴地重新push进一个节点…… 然而正确的实现应该是下面这样的吧,关键在于swap堆中 ...