zoukankan      html  css  js  c++  java
  • Supervisor安装与使用

    一、简介

    1、supervisor是什么

    superviosr是一个Linux/Unix系统上进程监控和管理的工具,它由python编写,可以用pip安装。supervisor能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

    2、为什么要使用supervisor

    supervisor可以实现单个或成组地控制进程,它可以把web服务的进程组当作自己的子进程,在子进程挂掉时重启。对一组进程进行统一管理是linux没有的功能

    3、supervisor组件

    supervisord是管理其他进程的主进程
    supervisorctl是supervisor客户端的命令行工具

    二、安装与配置

    #安装
    yum install python-setuptools -y
    easy_install supervisor
    
    #生成一个配置文件
    echo_supervisord_conf > /usr/local/supervisord.conf
    
    #修改[inet_http_server]配置,来启用WEB管理界面
    [inet_http_server]         ; inet (TCP) server disabled by default
    port=127.0.0.1:9001        ; ip_address:port specifier, *:port for all iface
    username=root              ; default is no username (open server)
    password=123456               ; default is no password (open server)
    
    [include]
    files = /usr/local/supervisor_conf/*.ini   ;配置文件存放地址
    

      

    三、使用

    #进程测试脚本
    [root@localhost~]#cat /usr/local/scripts/t.sh 
    #!/bin/bash
    while true;do
        date "+%Y-%m-%d %T" >>/tmp/t1.txt
        sleep 1
    done
    
    [root@localhost~]chmod +x  /usr/local/scripts/t.sh 
    
    
    #创建监控配置目录
    mkdir  /usr/local/supervisor_conf/
    
    #创建配置文件
    [root@localhost~]#cat  /usr/local/supervisor_conf/test_t.ini
    [program:test_t1]
    command=/bin/bash /usr/local/scripts/t.sh  ;启动命令
    autostart=true	; 在supervisord启动的时候也自动启动
    autorestart=true	; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
    startsecs=10	; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
    priority=2	; 进程启动优先级,默认999,值小的优先启动
    stdout_logfile=/tmp/test_t1.log ;日志文件
    
    
    
    #启动Supervisor服务
    [root@localhostscripts]#supervisord  -c /usr/local/supervisord.conf 
    
    
    #查看与测试
    [root@localhostscripts]#tailf  /tmp/t1.txt  #有文本一直写入
    
    [root@localhostscripts]#ps -ef|grep bash |grep t.sh
    root      12588  12587  0 09:45 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh
    
    #提前监控,测试杀掉进程
    [root@localhost~]#ps -ef|grep bash |grep t.sh
    root      12588  12587  0 09:45 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh
    [root@localhost~]kill 12588
    [root@localhost~]#ps -ef|grep bash |grep t.sh
    root      13112  12587  0 09:49 ?        00:00:00 /bin/bash /usr/local/scripts/t.sh
    

      

    4、交互终端

    supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

    [root@localhostscripts]#supervisorctl 
    Server requires authentication
    Username:root
    Password:
    
    test_t1                          RUNNING   pid 13262, uptime 0:02:13
    supervisor> help
    
    default commands (type help <topic>):
    =====================================
    add    exit      open  reload  restart   start   tail   
    avail  fg        pid   remove  shutdown  status  update 
    clear  maintail  quit  reread  signal    stop    version
    
    supervisor> stop all
    supervisor> start  all
    

      

    五、web管理

    #修改监听端口
    vim  /usr/local/supervisord.conf 
    [inet_http_server]         ; inet (TCP) server disabled by default
    port=0.0.0.0:9001        ; ip_address:port specifier, *:port for all iface
    #重启
    [root@localhost~]#ps -ef|grep supervisord
    root      13261      1  0 09:50 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
    root      14051  12337  0 09:56 pts/7    00:00:00 grep --color=auto supervisord
    [root@localhost~]#kill 13261
    [root@localhost~]supervisord -c /usr/local/supervisord.conf  

    浏览器访问

    六、Supervisor配置systemctl服务

    vim  /usr/lib/systemd/system/supervisor.service
    [Unit]
    Description=supervisor
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf
    ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target
    
    ##干掉原先的supervisor进程
    [root@localhost~]#ps -ef|grep super
    root      14065      1  0 09:57 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
    [root@localhost~]#kill 14065
    #使用systemctl启动
    [root@localhost~]#systemctl start supervisor.service
    [root@localhost~]#systemctl status supervisor.service
    ● supervisor.service - supervisor
       Loaded: loaded (/usr/lib/systemd/system/supervisor.service; disabled; vendor preset: disabled)
       Active: active (running) since 日 2019-04-28 10:03:34 CST; 1s ago
      Process: 14931 ExecStart=/usr/bin/supervisord -c /usr/local/supervisord.conf (code=exited, status=0/SUCCESS)
     Main PID: 14934 (supervisord)
       CGroup: /system.slice/supervisor.service
               ├─14934 /usr/bin/python /usr/bin/supervisord -c /usr/local/supervisord.conf
               ├─14935 /bin/bash /usr/local/scripts/t.sh
               └─14937 sleep 1
    
    4月 28 10:03:34 localhost.localdomain systemd[1]: Starting supervisor...
    4月 28 10:03:34 localhost.localdomain systemd[1]: Started supervisor.
    #开机自启
    [root@localhost~]systemctl enable supervisor.service
    Created symlink from /etc/systemd/system/multi-user.target.wants/supervisor.service to /usr/lib/systemd/system/supervisor.service.
    

      

  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/10782381.html
Copyright © 2011-2022 走看看