supervisord 作为主进程,管理旗下的各个子进程,子进程会产生若干线程。当某个管理的服务异常奔溃之后,supervisor 会自动重启该服务。配合使用 superlance 插件以实现 Http状态、内存等进行监控报警。

mysql

[program:mysql]
command=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe

运行Tomcat

[program:tomcat]
command=/path/to/tomcat/bin/catalina.sh run
process_name=%(program_name)s
startsecs=5
stopsignal=INT
user=tomcat
redirect_stderr=true
stdout_logfile=/var/log/tomcat.log #catalina.out

运行py服务

  • 安装:

    pip install supervisor

  • 生成配置文件:

    echo_supervisord_conf > /etc/supervisord.conf

  • 修改配置:

  如需允许 web 界面和命令行访问

[inet_http_server]
port=*:9001 ;这里*表示可以让其他终端访问supervisor web界面
username=username ; 用户名
password=password ; 密码

  配置一个服务

[program:test_http]
command=python test_http.py 501 ; 被监控的进程路径
directory=/home/admin/soft/supervisor-3.1.3 ; 执行前要不要先cd到目录去,一般不用
priority=1 ;数字越高,优先级越高
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启。。当然要选上了
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码(是说退出代码是这个时就不再重启了吗?待确定)
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout

这里 test_http.py 位于 directory(/home/admin/soft/supervisor-3.1.3)目录下

test_http.py:

#python 2x

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0" if __name__ == "__main__":
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000 server_address = ('10.125.24.105', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass) sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()
  • 启动

supervisord -c /etc/supervisord.conf

  • 管理命令
sudo supervisorctl
status: 查看当前运行的进程列表
stop xxx: 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值。
start xxx: 启动某个进程
restart xxx: 重启某个进程
stop groupworker: 重启所有属于名为groupworker这个分组的进程(start,restart同理)
stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。

显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。

  • 重新加载配置

supervisorctl -c /etc/supervisord.conf

supervisor笔记的更多相关文章

  1. Supervisor学习笔记

    请点击我 >  supervisor笔记

  2. 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

    作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...

  3. 学习大牛笔记nginx + gunicorn + supervisor

    安装 gunicorn pip install gunicorn pip 是一个重要的工具,python 用来管理包.还有一个最佳生产就是每次使用 pip 安装的库,都写入一个 requirement ...

  4. Python学习笔记【Supervisor】:使用Supervisor监控Tornado进程

    Linux常见应用服务配置模式nginx和supervisor:采用主配置文件+项目配置文件 安装(如果使用pip安装注意看是否需要指定使用python2版本) 第一步:在Linux中使用apt-ge ...

  5. Supervisor (进程管理利器) 使用说明 - 运维笔记

    一.Supervisor简单介绍supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序.supervisor与laun ...

  6. Node.js学习笔记(一) --- HTTP 模块、URL 模块、supervisor 工具

    一.Node.js创建第一个应用 如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器, 来处理客户端的请求相应.不过对 Node.js 来说,概念完全 ...

  7. Linux服务器部署.Net Core笔记:四、安装Supervisor进程守护

    Supervisor 是用 Python 开发的 Linux/Unix 系统下的一个进程管理工具.它可以使进程脱离终端,变为后台守护进程(daemon).实时监控进程状态,异常退出时能自动重启. Su ...

  8. tensorflow 笔记 15:如何使用 Supervisor

    如何使用Supervisor在不使用Supervisor的时候,我们的代码经常是这么组织的 variables ... ops ... summary_op ... merge_all_summari ...

  9. [原]CentOS7.2最小安装环境部署Asp.NET Core笔记

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 写在前面的话 不知不觉在cnblogs上注册已经10多年了,看我的园龄就直接暴露了我实际年龄, ...

随机推荐

  1. java Integer 源码学习

    转载自http://www.hollischuang.com/archives/1058 Integer 类在对象中包装了一个基本类型 int 的值.Integer 类型的对象包含一个 int 类型的 ...

  2. VS2015下的Android开发系列02——用VS开发第一个Android APP

    配置Android模拟器 这算是第一篇漏下说的,配置好VS的各参数,新建Android项目后,会发现菜单下的工具栏会多出Android相关的工具栏,红色圈出的就是AVD. 打开AVD后可以从模版处选一 ...

  3. quagga源码分析--大内总管zebra

    zebra,中文翻译是斑马,于是我打开了宋冬野的<斑马,斑马>作为BGM来完成这个篇章,嘿嘿,小资一把! zebra姑且戏称它是quagga项目的大内总管. 因为它负责管理其他所有协议进程 ...

  4. ubuntu16 网络设置

    打开Ubuntu的终端,输入:sudo gedit /etc/network/interfaces表示使用gedit编辑器打开interfaces文件. 在打开的文件中,若有内容,先全部删除.然后输入 ...

  5. 将int,bigint整型数值可逆转换字符串

    将 Int 和 BigInt 类型数值转换为字符串的可逆方法,可用于缩短网址或记录的ID转换等. 如: 9223372036854775807 => aZl8N0y58M7 class Conv ...

  6. cocos2d-x中DrawNode常见的图像绘制函数

    //绘制矩形  ('起始点' , '目标点' , '填充颜色') auto rect=DrawNode::create(); rect->drawRect(Vec2(0,0),Vec2(100, ...

  7. Android设备标识符的使用

    设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager) con ...

  8. hibernate子查询

    对于支持子查询的数据库,Hibernate支持在查询中使用子查询.一个子查询必须被圆括号包围起来(经常是SQL聚集函数的圆括号). 甚至相互关联的子查询(引用到外部查询中的别名的子查询)也是允许的. ...

  9. 【IE6的疯狂之六】li在IE中底部3像素的BUG(增加浮动解决问题)

    今天开发项目中碰到一个li在IE中的BUG,先来看设计原型(如图:) 两个红色中间是<li>1px的底边框: 我写的代码如下: ============================== ...

  10. linux入侵控制与痕迹清理

    后门 (1)开机自动反弹shell (2)linux后门 Rookit 目前常用的有:t0rn /mafix/enyelkm 等 mafix rootkit Mafix是一款常用的轻量应用级别Root ...