1. 程式人生 > >Linux程序守護——Supervisor 使用記錄

Linux程序守護——Supervisor 使用記錄

0、旁白

Supervisor是個父程序,你要守護的程序會以Supervisor的子程序形式存在,所以老子才可以管兒子

官網連結:http://supervisord.org/

1、安裝

easy_install supervisor

2、配置

echo_supervisord_conf > /etc/supervisord.conf #生成配置檔案

3、啟動

supervisord -c /etc/supervisord.conf # 啟動Supervisor程序,父程序不起來,什麼都不要說了


# 父程序起來之後,就用【supervisorctl】這個工具管理子程序

supervisorctl -c /etc/supervisord.conf status 檢視狀態

supervisorctl -c /etc/supervisord.conf reload 重新載入配置檔案

supervisorctl -c /etc/supervisord.conf start [all]|[x] 啟動所有/指定的程式程序

supervisorctl -c /etc/supervisord.conf stop [all]|[x] 關閉所有/指定的程式程序

4、引數

[unix_http_server]

引數選項 中文白話
file=/tmp/supervisor.sock socket檔案的路徑,supervisorctl用XML_RPC和supervisord通訊就是通過它進行的。如果不設定的話,supervisorctl也就不能用了不設定的話,預設為none。 非必須設定
;chmod=0700 這個簡單,就是修改上面的那個socket檔案的許可權為0700不設定的話,預設為0700。 非必須設定
;chown=nobody:nogroup 這個一樣,修改上面的那個socket檔案的屬組為user.group不設定的話,預設為啟動supervisord程序的使用者及屬組。非必須設定
;username=user 使用supervisorctl連線的時候,認證的使用者不設定的話,預設為不需要使用者。 非必須設定
;password=123 和上面的使用者名稱對應的密碼,可以直接使用明碼,也可以使用SHA加密如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d預設不設定。非必須設定

;[inet_http_server]

偵聽在TCP上的socket,Web Server和遠端的supervisorctl都要用到他 不設定的話,預設為不開啟。非必須設定

引數選項 中文白話
;port=127.0.0.1:9001 這個是偵聽的IP和埠,偵聽所有IP用 :9001或*:9001。 這個必須設定,只要上面的[inet_http_server]開啟了,就必須設定它
;username=user 這個和上面的uinx_http_server一個樣。非必須設定
;password=123 這個也一個樣。非必須設定

[supervisord]

這個主要是定義supervisord這個服務端程序的一些引數的這個必須設定,不設定,supervisor就不用幹活了

引數選項 中文白話
logfile=/tmp/supervisord.log 這個是supervisord這個主程序的日誌路徑,注意和子程序的日誌不搭嘎。預設路徑$CWD/supervisord.log,$CWD是當前目錄。。非必須設定
logfile_maxbytes=50MB 這個是上面那個日誌檔案的最大的大小,當超過50M的時候,會生成一個新的日誌檔案。當設定為0時,表示不限制檔案大小預設值是50M,非必須設定。
logfile_backups=10 日誌檔案保持的數量,上面的日誌檔案大於50M時,就會生成一個新檔案。檔案數量大於10時,最初的老檔案被新檔案覆蓋,檔案數量將保持為10當設定為0時,表示不限制檔案的數量。預設情況下為10。。。非必須設定
loglevel=info 日誌級別,有critical, error, warn, info, debug, trace, or blather等。預設為info。。。非必須設定項
pidfile=/tmp/supervisord.pid supervisord的pid檔案路徑。預設為$CWD/supervisord.pid。。。非必須設定
nodaemon=false 如果是true,supervisord程序將在前臺執行。預設為false,也就是後臺以守護程序執行。。。非必須設定
minfds=1024 這個是最少系統空閒的檔案描述符,低於這個值supervisor將不會啟動。系統的檔案描述符在這裡設定cat /proc/sys/fs/file-max。預設情況下為1024。。。非必須設定
minprocs=200 最小可用的程序描述符,低於這個值supervisor也將不會正常啟動。ulimit -u這個命令,可以檢視linux下面使用者的最大程序數。預設為200。。。非必須設定
;umask=022 程序建立檔案的掩碼。預設為022。。非必須設定項
;user=chrism 這個引數可以設定一個非root使用者,當我們以root使用者啟動supervisord之後。我這裡面設定的這個使用者,也可以對supervisord進行管理。預設情況是不設定。。。非必須設定項
;identifier=supervisor 這個引數是supervisord的識別符號,主要是給XML_RPC用的。當你有多個supervisor的時候,而且想呼叫XML_RPC統一管理,就需要為每個supervisor設定不同的識別符號了。預設是supervisord。。。非必需設定
;directory=/tmp 這個引數是當supervisord作為守護程序執行的時候,設定這個引數的話,啟動supervisord程序之前,會先切換到這個目錄。預設不設定。。。非必須設定
;nocleanup=true 這個引數當為false的時候,會在supervisord程序啟動的時候,把以前子程序產生的日誌檔案(路徑為AUTO的情況下)清除掉。有時候咱們想要看歷史日誌,當然不想日誌被清除了。所以可以設定為true。預設是false,有除錯需求的同學可以設定為true。。。非必須設定
;childlogdir=/tmp 當子程序日誌路徑為AUTO的時候,子程序日誌檔案的存放路徑。預設路徑是這個東西,執行下面的這個命令看看就OK了,處理的東西就預設路徑python -c "import tempfile;print tempfile.gettempdir()"。非必須設定
;environment=KEY="value" 這個是用來設定環境變數的,supervisord在linux中啟動預設繼承了linux的環境變數,在這裡可以設定supervisord程序特有的其他環境變數。supervisord啟動子程序時,子程序會拷貝父程序的記憶體空間內容。 所以設定的這些環境變數也會被子程序繼承。小例子:environment=name="haha",age="hehe"。預設為不設定。。。非必須設定
;strip_ansi=false 這個選項如果設定為true,會清除子程序日誌中的所有ANSI 序列。什麼是ANSI序列呢?就是我們的\n,\t這些東西。預設為false。。。非必須設定

[rpcinterface:supervisor]

這個選項是給XML_RPC用的,當然你如果想使用supervisord或者web server 這個選項必須要開啟的

[supervisorctl]

引數選項 中文白話
serverurl=unix:///tmp/supervisor.sock 這個是supervisorctl本地連線supervisord的時候,本地UNIX socket路徑,注意這個是和前面的[unix_http_server]對應的預設值就是unix:///tmp/supervisor.sock 非必須設定
;serverurl=http://127.0.0.1:9001 這個是supervisorctl遠端連線supervisord的時候,用到的TCP socket路徑注意這個和前面的[inet_http_server]對應。預設就是http://127.0.0.1:9001 非必須項
;username=chris 使用者名稱預設空。非必須設定
;password=123 密碼預設空。。非必須設定
;prompt=mysupervisor 輸入使用者名稱密碼時候的提示符預設supervisor。。非必須設定
;history_file=~/.sc_history 這個引數和shell中的history類似,我們可以用上下鍵來查詢前面執行過的命令。預設是no file的。。所以我們想要有這種功能,必須指定一個檔案。。。非必須設定