• Supervisor


    Supervisor是Linux下用python写的一个进程监控程序,它的出现是为了满足以下需求,假设我有一个进程需要每时每刻的跑,但是这个进程又可能由于各种原因有可能中断,当进程中断的时候我希望能够自动重新启动它,此时,就是这个工具的用武之地.

    安装:

    需要基于Python环境,安装前可能需要安装以下两个包

    sudo apt-get install -y python-dev

    sudo apt-get install -y libevent-dev

    安装完成后使用

    sudo pip install supervisor

    配置:

    首先在etc下新建一个supervisord.conf文件,

    touch supervisord.conf

    需要修改权限,最简单的是chmod 777

    chmod 777 supervisord.conf

    然后生成配置文件

    echo_supervisord_conf > /etc/supervisord.conf

    supervisord -c /etc/supervisord.conf

    测试:

    先写个简单脚本

     #! /usr/local/bin/python
      2 import time
      3 
      4 time.sleep(120)
      5 print 'hello'
    

    赋予执行权限

    chmod a+x hello.py

    修改配置文件

    vim /etc/supervisord.conf

    [program:hello]
     12 command=python /home/xiao/test/hello.py
     13 autorestart=true
     14 directory=/home/xiao/test/
     15 redirect_stderr=true
    

     

    执行:

    Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl,命令使用解释如下:

    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 status 查看监控了什么程序

    注意programxxx之间不要空格,例如programhello

    可视化操作:

    在conf文件里有个unix_http_server在里面进行修改

    输入http://localhost:9001

    ps -ef | grep python  用这个查看进程信息

    配置文件

    键入: vim /etc/supervisord.conf

    在文件的末尾添加一个storm ui程序监控,配置如下:

    ;storm ui

    [program:ui]

    command=/usr/storm/storm/ui-sv.sh ;被监控程序指定的运行脚本

    directory=/usr/storm/storm ;被监控程序运行的路径

    autostart=false ;是否随supervisord进程启动而启动,包括reloadconf

    autorestart=true ;被监控程序异常中断是否自动重启

    startsecs=5 ;被监控程序启动时持续时间

    startretries=5 ;被监控程序启动失败重试的次数

    redirect_stderr=true ;是否重定向std err

    stdout_logfile=/tmp/ui-sv.log ;stdou 重定向输出文件

    stdout_events_enabled=true ;是否允许stdout事件

    stopsignal=QUIT ;被监控程序kill的信号

    如果command的栏运行的是shell脚本,那么在shell 脚本启动被监控程序时要用exec修饰。例如:

    #!/bin/bash

    exec /home/scott/install/storm/storm-0.9.0.1/bin/stormnimbus

    否则,supervisord停止不了启动的进程.除此之外,shell脚本里不能出现&之类的后台运行符号。

    supervisord开机自启动
    chkconfig --add supervisord #加为服务
    运行ntsysv,选中supervisord启动系统时跟着启动。

  • 相关阅读:
    java中math类
    java中的值传递和引用传递(转)
    eclipse 字体和配色修改
    JAR WAR EAR包的区别
    java中基本类型
    tomcat 7.0 配置详解
    或许你需要一些可操作性更强的实践
    Assembly.CreateInstance()与Activator.CreateInstanc
    OOD沉思录2 类和对象的关系包含关系
    C#的插件开发
  • 原文地址:https://www.cnblogs.com/tuifeideyouran/p/4213489.html
Copyright © 2020-2023  润新知