IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

用supervisord管理杂乱的服务

五四陈科学院-坚信科学,分享技术 2011-09-21 22:25:24 累计浏览 2,594 次
本机暂存

    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,载入最新的配置文件,并按新的配置启动、管理所有进程。

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

    注意

     不带参数运行supervisord是以daemon方式运行。

     把supervisord加入到开机启动项里就可以完成监控进程的功能了。

     当supervisord以非daemon方式运行时,杀掉supervisord后,被监控的进程也退出了。

     而以daemon方式运行,杀掉supervisord对被监控进程无影响。

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,252)
  2. 配置Nginx+uwsgi更方便地部署python应用 (累计阅读 107,167)
  3. 程序员技术练级攻略 (累计阅读 35,472)
  4. python实现自动登录discuz论坛 (累计阅读 32,834)
  5. python编程细节──遍历dict的两种方法比较 (累计阅读 20,371)
  6. 每个程序员都应该学习使用Python或Ruby (累计阅读 17,919)
  7. Chrome和goagent的配置方法,你懂的 (累计阅读 16,843)
  8. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,742)
  9. 使用python爬虫抓站的一些技巧总结:进阶篇 (累计阅读 13,302)
  10. 我的PHP,Python和Ruby之路 (累计阅读 13,149)