Linux程序守護——Supervisor 使用記錄
阿新 • • 發佈:2018-12-15
0、旁白
Supervisor是個父程序,你要守護的程序會以Supervisor的子程序形式存在,所以老子才可以管兒子
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的。。所以我們想要有這種功能,必須指定一個檔案。。。非必須設定 |