文档章节

用supervisord管理杂乱的服务

wx---每日佳选
 wx---每日佳选
发布于 2011/12/14 21:11
字数 759
阅读 409
收藏 2

supervisord

Supervisord是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效。

环境

centos
python2.4

安装

wget http://pypi.python.org/packages/source/s/supervisor/supervisor-3.0a10.tar.gz#md5=99c6fbd45bade87301296b7a597fb68e

tar zxvf supervisor-3.0a10.tar.gz
cd supervisor-3.0a10
python setup.py install
如果上述遇到问题,请按如下操作。

依赖setuptools安装

wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b
sh setuptools-0.6c11-py2.4.egg

产生基础配置文件

echo_supervisord_conf > /etc/supervisord.conf

配置

[inet_http_server]前面的分号去掉;
定义port=192.168.1.1:8888

启动

supervisord -c /etc/supervisord.conf

查看

浏览器打开 http://192.168.1.1:8888

深入配置

[program:service]
command=sh /opt/soft/service/run.sh ; the program (relative uses PATH, can take args)
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1 ; number of processes copies to start (def 1)
directory=/opt/soft/service/ ; directory to cwd to before exec (def no cwd)
autostart=true ; start at supervisord start (default: true)
autorestart=true ; retstart at unexpected quit (default: true)
stopsignal=QUIT ; signal used to kill process (default TERM)
stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)

以上配置了一个shell脚本的启动和stop过程。
一般java程序都喜欢在一个shell脚本内初始化classpath,再执行java main。
直接在shell中run java会出现stop失败的情况,在启动前添加 exec即可。

#!/bin/sh
export CLASSPATH=.
for jarpath in `ls library/*.jar`
do
CLASSPATH=$CLASSPATH:$jarpath
done
export CLASSPATH=$CLASSPATH
exec java com.chen.main;


帮助

supervisord,初始启动Supervisord,启动、管理配置中设置的进程。
supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon。
supervisorctl start programxxx,启动某个进程
supervisorctl restart programxxx,重启某个进程
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
supervisorctl reread,当一个服务由自动启动修改为手动启动时执行一下就ok

如何添加进程不启动所有的服务进程

1)修改/etc/supervisord.conf
2)supervisorctl reread
3)supervisorctl add xxservice

如何删除进程不启动所有的服务进程

1)修改/etc/supervisord.conf
2)supervisorctl reread
3)supervisorctl update

http://smarden.org/runit/runscripts.html 一些可参考的启动配置

supervisord开机自启动
chkconfig --add supervisord #加为服务
运行ntsysv,选中supervisord启动系统时跟着启动。
[/etc/rc.d/init.d/supervisord]

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"

start()
{
echo -n $"Starting $prog: "
daemon $prog_bin --pidfile $PIDFILE
[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
echo
}

stop()
{
echo -n $"Shutting down $prog: "
[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
echo
}

case "$1" in

start)
start
;;

stop)
stop
;;

status)
status $prog
;;

restart)
stop
start
;;

*)
echo "Usage: $0 {start|stop|restart|status}"
;;

esac

注意
不带参数运行supervisord是以daemon方式运行。
把supervisord加入到开机启动项里就可以完成监控进程的功能了。
当supervisord以非daemon方式运行时,杀掉supervisord后,被监控的进程也退出了。
而以daemon方式运行,杀掉supervisord对被监控进程无影响。

本文转载自:http://www.54chen.com/java-ee/supervisord-manage-service.html

wx---每日佳选
粉丝 8
博文 5
码字总数 140
作品 0
廊坊
高级程序员
私信 提问
Linux后台进程管理利器:supervisor

一、安装: 1、yum 方式(推荐): 2、pip安装(不推荐) 二、生成配置文件 配置: 三、启动 四、进程管理 也可以进入supervision控制台: 五.重启服务,重新加载配置文件 停止然后重启所有子程序: ...

_Change_
2016/06/03
109
0
.net core入门之守护进程

打开Visual Studio,看.net core模板里只有控制台程序和web程序,那我们以前在windows上跑的windows service跑,那在CentOS上能不能做类似的实现呢? 当然可以,解决方案就是守护进程,百度到...

weidedong
2016/09/17
498
0
阅读准备-构建redis容器

Supervisor Centos Supervisor安装 要求 python环境 因为是一个 Python 程序 [root@localhost wang]# python -VPython 2.7.5 验证: 成功安装后可以登陆python 查看是否能成功加载 Supervis...

一叶舟troy
2015/12/13
75
0
centos上安装supervisor来管理dotnetcore等应用程序

supervisor 介绍:   这是一款用python编写的进程管理工具,可以守护他管理的所有进程,防止异常退出,以及提供一个可视化的web界面来手动管理,打开关闭重启各种应用,界面如下: 关于在c...

yzy121403725
2018/05/03
0
0
Supervisor 来管理进程

一、使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的...

柴鑫旺
2017/09/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
4
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
3
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
3
0
分页查询

一、配置 /*** @author beth* @data 2019-10-14 20:01*/@Configurationpublic class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ ......

一个yuanbeth
昨天
6
0
在LINQPad中使用Ignite.NET

LINQPad是进行.NET开发的一款优秀工具,非常有利于Ignite.NET API的快速入门。 入门 下载LINQPad:linqpad.net/Download.aspx,注意要选择64位操作系统的AnyCPU版本; 安装Ignite.NET的NuGet...

李玉珏
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部