supervisor

supervisor是py2下的一個web管理工具html

python2版本:
使用py2的pip工具進行安裝
pip install supervisorpython

安裝完成以後多了三個命令
supervisord
supervisorctl
echo_supervisord_confios

在centos下默認在etc下沒有生成supervisor的配置文件目錄web

mkdir /etc/supervisor/supervisord.d/ -p
echo_supervisord_conf > /etc/supervisord.conf 生成supervisor的主配置文件
/usr/bin/supervisord -c /etc/supervisord.conf 按照指定的配置文件啓動進程

根據需求修改supervisord.conf最後的includeshell

經常使用命令
supervisorctl 進入交互界面
supervisorctl status 查看被監控進程狀態
supervisorctl stop all 關閉被監控的進程
supervisorctl start all 啓動被監控的進程
supervisorctl start program-name 其中program-name爲配置文件[program:xx]中的xx
supervisorctl stop program-name 其中program-name爲配置文件[program:xx]中的xx
supervisorctl restart all 重啓被監控的進程
supervisorctl reatart program-name 重啓某一進程,program-name爲[program:xx]中的xx
supervisorctl shutdown 關閉supervisord服務端
supervisorctl reload 從新加載配置文件

將supervisor加入到開機自啓動服務中vim

1 利用/etc/rc.local
echo "/usr/bin/supervisord -c /etc/supervisord.conf" >> /etc/rc.local

 /etc/rc.local是/etc/rc.d/rc.local的軟鏈接
若是開機啓動不生效,則首先須要檢查下/etc/rc.d/rc.local是否具備可執行權限

2 加入systemctl管理
編輯配置文件
vim /lib/systemd/system/supervisor.service

[Unit]
Description=supervisor
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /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 enable supervisor.service      加入開機自啓動服務
   systemctl daemon-reload      從新載入systemd,掃描新的或有變更的單元(必要步驟)
   chmod 766 /lib/systemd/system/supervisor.service   修改文件權限
  • supervisor

    一個Linux/Unix系統上的進程監控工具
    一個Python開發的通用的進程管理程序
    能夠管理和監控Linux上面的進程
    能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓
    不過同daemontools同樣,它不能監控daemon進程centos

    特色

    • supervisor則能夠完美的解決這些問題。supervisor管理進程,就是經過fork/exec的方式把這些被管理的進程,看成supervisor的子進程來啓動。這樣的話,咱們只要在supervisor的配置文件中,把要管理的進程的可執行文件的路徑寫進去就OK了
    • 被管理進程做爲supervisor的子進程,當子進程掛掉的時候,父進程能夠準確獲取子進程掛掉的信息的,因此固然也就能夠對掛掉的子進程進行自動重啓,固然重啓仍是不重啓,也要看你的配置文件裏面有木有設置autostart=true了
    • supervisor經過INI格式配置文件進行配置

    組件

  • supervisordsocket

    主進程,負責管理進程的server,它會根據配置文件建立指定數量的應用程序的子進程,管理子進程的整個生命週期,對crash的進程重啓,對進程變化發送事件通知等。同時內置web server和XML-RPC Interface,輕鬆實現進程管理。。該服務的配置文件在/etc/supervisor/supervisord.conf。工具

  • supervisorctl命令行

    客戶端的命令行工具,提供一個相似shell的操做接口,經過它你能夠鏈接到不一樣的supervisord進程上來管理它們各自的子程序,命令經過UNIX socket或者TCP來和服務通信。用戶經過命令行發送消息給supervisord,能夠查看進程狀態,加載配置文件,啓停進程,查看進程標準輸出和錯誤輸出,遠程操做等。服務端也能夠要求客戶端提供身份驗證以後才能進行操做。

  • Web Server

    superviosr提供了web server功能,可經過web控制進程(須要設置[inethttpserver]配置項)

  • XML-R- #supervisor

    一個Linux/Unix系統上的進程監控工具
    一個Python開發的通用的進程管理程序
    能夠管理和監控Linux上面的進程
    能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓
    不過同daemontools同樣,它不能監控daemon進程

安裝、配置、使用

  • supervisor是python編寫的,能夠用easy_install、pip均可以安裝
    yum install python-setuptools
    easy_install pip
    pip install supervisor
  • 配置
    在supervisord.conf中設置經過web能夠查看管理的進程,加入如下代碼(默認即有,取消註釋便可)
    [inet_http_server]
    port=9001
    username=user
    password=123
  • 啓動
    supervisord -c /etc/supervisord.conf
    或者 systemctl start supervisord.service
  • 查看是否處於監聽狀態
    lsof -i:9- #supervisor
    一個Linux/Unix系統上的進程監控工具
    一個Python開發的通用的進程管理程序
    能夠管理和監控Linux上面的進程
    能將一個普通的命令行進程變爲後臺daemon,並監控進程狀態,異常退出時能自動重啓
    不過同daemontools同樣,它不能監控daemon進程

管理

  • 查看supervisorctl支持的命令

    supervisorctl help

查看當前運行的進程列表

原文地址
http://www.javashuo.com/article/p-cwmkvehr-e.html




看是否處於監聽狀態
lsof -i:9001

相關文章
相關標籤/搜索