Supervisor

Supervisor是Linux下用python寫的一個進程監控程序,它的出現是爲了知足如下需求,假設我有一個進程須要每時每刻的跑,可是這個進程又可能因爲各類緣由有可能中斷,當進程中斷的時候我但願可以自動從新啓動它,此時,就是這個工具的用武之地.python

安裝:shell

須要基於Python環境,安裝前可能須要安裝如下兩個包vim

sudo apt-get install -y python-devbash

sudo apt-get install -y libevent-dev工具

安裝完成後使用測試

sudo pip install supervisorui

配置:spa

首先在etc下新建一個supervisord.conf文件,命令行

touch supervisord.conf3d

須要修改權限,最簡單的是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啓動系統時跟着啓動。

相關文章
相關標籤/搜索