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.
    

      

  • 相关阅读:
    Windows 7安装 OneDrive
    MySQL8.0降级为MySQL5.7
    Windows和Linux下安装Rsync
    Jenkins持续集成工具安装
    Pure-Ftpd安装配置
    redis安装配置
    Tcp粘包处理
    .Net Core Socket 压力测试
    使用RpcLite构建SOA/Web服务(Full .Net Framework)
    使用RpcLite构建SOA/Web服务
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/10782381.html
Copyright © 2011-2022 走看看