Linux之supervisor進程管理工作


1.  安裝配置supervisor工具

[iyunv@localhost /]# yum install python-setuptools -y  必須有這一步
[iyunv@localhost /]#easy_install supervisor

如果easy_install不好用,可以直接從官網下載 

    wget https://pypi.python.org/packages/80/37/964c0d53cbd328796b1aeb7abea4c0f7b0e8c7197ea9b0b9967b7d004def/supervisor-3.3.1.tar.gz
        編譯安裝supervisor工具。

        tar zxf supervisor-3.3.1.tar.gz

        cd supervisor

        python setup.py install

        報錯:

        問題需要解決。

[iyunv@localhost /]#mkdir /etc/supervisor

[iyunv@localhost /]#echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,將文件尾部的

[include]
files = conf.d/*.conf

2.  配置supervisor為系統服務

vim /lib/systemd/system/supervisord.service 。
supervisord開機自啟動腳本(各版本系統):https://github.com/Supervisor/initscripts 。
# supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /usr/local/etc/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
自啟動腳本都能夠添加到systemctl自啟動服務。
systemctl enable supervisord.service
systemctl start/restart/stop supervisor.service

3.  配置子進程

創建/etc/supervisor/conf.d,在這個目錄下,創建:

[root@devgo conf.d]# cat report.conf 
[program:report]
command=/home/devgo/gohome/src/git.cmr.net.cn/cmr/report/cmd/report/report ;
directory=/home/devgo/gohome/src/git.cmr.net.cn/cmr/report/cmd/report ;
autorestart=true ;
stderr_logfile=/var/log/report.err.log ; 
stdout_logfile=/var/log/report.out.log ;
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT

4.  啟動子進程

    supervisorctl start report

5.  關閉子進程

    supervisorctl stop report

6.  啟動子進程的時候報錯

supervisor: couldn't chdir to /application/mongodb/bin;: ENOENT
supervisor: child process was not spawnedp

 

注意:配置文件中的分號前面的空格,沒有空格,就報這個錯誤。

7.  supervisor   backoff

    supervisor只能監控前台運行程序,不能監控后台運行程序。否則就會有backoff。

8.  CentOS6.5使用supervisor管理zookeeper

    supervisor配置文件中,添加:

[include]
files = conf.d/*.ini

在/etc/supervisor/conf.d目錄下,新建一個文件zookeeper.ini文件,內容如下:

[root@datanode2 conf.d]# cat zookeeper.ini
[program:zookeeper]
command=/usr/local/zookeeper-3.4.6/bin/zkServer.sh start-foreground
user=root
autostart=true
autorestart=true
startsecs=3

注意空格

9.  CentOS6.5創建/etc/init.d/supervisor文件,內容如下:

#!/bin/bash
#
# supervisord   This scripts turns supervisord on
#
# Author:       Mike McGrath <mmcgrath@redhat.com> (based off yumupdatesd)
#
# chkconfig:    - 95 04
#
# description:  supervisor is a process control utility.  It has a web based
#               xmlrpc interface as well as a few other nifty features.
# processname:  supervisord
# config: /etc/supervisor/supervisord.conf
# pidfile: /var/run/supervisord.pid
#

# source function library
. /etc/rc.d/init.d/functions

RETVAL=0

start() {
    echo -n $"Starting supervisord: "
    daemon "/usr/bin/supervisord -c /etc/supervisor/supervisord.conf "
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/supervisord
}

stop() {
    echo -n $"Stopping supervisord: "
    killproc supervisord
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/supervisord
}

restart() {
    stop
    start
}

case "$1" in
  start)
    start
    ;;
  stop) 
    stop
    ;;
  restart|force-reload|reload)
    restart
    ;;
  condrestart)
    [ -f /var/lock/subsys/supervisord ] && restart
    ;;
  status)
    status supervisord
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"
    exit 1
esac

exit $RETVAL

    chmod a+x /etc/init.d/supervisor

    chkconfig --add supervisor

    chkconfig --level 345 supervisor on

10.  CentOS6.5開機啟動supervisor

    vi /etc/rc.local/

    /etc/init.d/supervisor start

     這種方式重啟完不好使

 

    

        

 

 

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM