欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解supervisor使用教程

 更新時間:2017年11月21日 10:10:37   投稿:laozhang  
supervisor是用python寫的一個進(jìn)程管理工具,用來控制進(jìn)程,本文為大家介紹一下supervisor使用教程,希望能夠幫助到你。

A Process Control System 使用b/s架構(gòu)、運行在類Unix系統(tǒng)上一個進(jìn)程監(jiān)控管理系統(tǒng)它可以使進(jìn)程以daemon方式運行,并且一直監(jiān)控進(jìn)程,在意外退出時能自動重啟進(jìn)程。

安裝

Supervisor是使用python開發(fā)的一個進(jìn)程管工具,安裝和使用都非常簡單。使用 pip 或者 easy_install 安裝會非常方便,自動解決依賴關(guān)系。
– sudo pip install supervisor
– sudo easy_install supervisor

pip的安裝請參考 python自動安裝pip

初識

安裝完成后系統(tǒng)會增加幾個命令

supervisord 用于啟動supervisor服務(wù)。

supervisorctl 用于管理supervisor服務(wù),管理使用supervisor啟動的進(jìn)程。

安裝好supervisor后需要手動的生成配置文件。

echo_supervisord_conf | sudo tee /etc/supervisord.conf
supervisor默認(rèn)讀取的配置文件為/etc/supervisord.conf,建議將配置文件放在此位置。

我們先簡單的查看一下 supervisord.conf,配置文件格式和ini格式配置文件相同,由節(jié)、鍵、值組成,配置文件注釋為。

[unix_http_server]

此節(jié)是配置連接supervisord的sock的文件,包括sock文件路徑,用戶認(rèn)證。使用supervisorctl命令進(jìn)行管理進(jìn)程時,使用的就是此sock文件。默認(rèn)保持開啟,如將此項關(guān)閉 [inet_http_server] 則無法使用。 [inet_http_server]
此節(jié)配置supervisor的web管理界面,配置監(jiān)聽的地址和端口,已經(jīng)用戶認(rèn)證。默認(rèn)為關(guān)閉狀態(tài)。如需開啟則將此節(jié)注釋去掉,然后修改相應(yīng)的鍵值。 [supervisord]

此節(jié)為配置supervisor服務(wù)參數(shù),例如日志,日志大小等一些參數(shù)。 [supervisorctl]

用于配置supervisorctl管理程序參數(shù),例如sock文件路徑,需要和[unix_http_server]相同。

[include]此節(jié)作用為包含其他配置文件,本文建議開啟此項,包含額外的配置文件,將需要管理的進(jìn)程配置寫入到額外的配置文件,不需要經(jīng)常編輯主配置文件,保證安全性。修改代碼為

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

讀取/etc/supervisor.d/文件夾下所有后綴為conf的文件。

第一步配置第一個使用supervisord管理的程序

我們使用 python2.7 來作為演示,使用SimpleHTTPServer模塊方便快速的啟動一個http server。

1,創(chuàng)建配置文件 /etc/supervisor.d/test1.conf,寫入一下內(nèi)容

[program:simplehttpserver]
command=/usr/bin/env python2.7 -m SimpleHTTPServer 20080

這是一個最簡單的例子,第一行指定當(dāng)前配置的程序名稱。第二行程序運行命令(20080 為 http server端口號)。

2,第一個程序已經(jīng)配置好,接下來就可以啟動supervisord來查看一下效果。

輸入命令 sudo supervisord 即可啟動服務(wù)。

很多機器會打印出幾行信息,這并不代表程序出錯,意思是

“supervisord 是使用root身份來啟動的,讀取默認(rèn)位置的配置文件,如果需要讀取其他位置配置文件請使用 -c 參數(shù)”

3,現(xiàn)在使用ps -ef | grep python來檢查一下剛才配置的程序是否已經(jīng)啟動。到此為止我們的第一步已經(jīng)完成。

詳細(xì)配置

[program:theprogramname]
command=/bin/cat    ; 程序運行命令,建議使用絕對路徑。
process_name=%(program_name)s ; 程序名稱,可用的變量有 `group_name`, `host_node_name`, `process_num`, `program_name`, `here`(配置文件目錄)。 一般程序需要運行多個副本的情況會使用。后面會有例子。
numprocs=1     ; 程序運行的副本個數(shù),默認(rèn)為1,如果值大于1,則`process_name` 必須包含 `%(process_num)s`
numprocs_start=0    ; `%(process_num)s`起始數(shù)字,默認(rèn)為0
00=/tmp    ; 程序運行的所在目錄,相當(dāng)于先cd到指定目錄,然后運行程序。
umask=022      ; umask for process (default None)
priority=999     ; 程序操作的的優(yōu)先級,例如在start all/stop all,高優(yōu)先級的程序會先關(guān)閉和重啟。
autostart=true    ; 在supervisord啟動時自動啟動,默認(rèn)為true
startsecs=1     ; 程序啟動前等待時間等待時間。默認(rèn)為1。
startretries=3    ; 嘗試重啟最大次數(shù)。默認(rèn)為3。
autorestart=unexpected  ; 是否自動重啟,可選參數(shù)為 false, unexpected, true。如果為false則不自動重啟,如果為unexpected表示如果程序退出信號不在 `exitcodes` 中,則自動重啟。默認(rèn)為unexpected
exitcodes=0,2     ; 程序退出碼。配合`autorestart`使用。默認(rèn)為 0,2
stopsignal=QUIT    ; 殺死進(jìn)程是發(fā)送的信號,默認(rèn)為TREM。
stopwaitsecs=10    ; 發(fā)送SIGKILL信號前最大等待時間。默認(rèn)為10。
user       ; 以指定用戶身份啟動程序。默認(rèn)為當(dāng)前用戶。
stopasgroup=false    ; 是否向子進(jìn)程發(fā)送停止信號,這對于Flask的debug模式很有用處,如果設(shè)置為true,則不向子進(jìn)程發(fā)送停止信號。默認(rèn)為false
killasgroup=false    ; 是否向子進(jìn)程發(fā)送kill信號,默認(rèn)為false
redirect_stderr=false   ; 將錯誤輸出定向到標(biāo)準(zhǔn)輸出,默認(rèn)為false
stdout_logfile=/a/path  ; 標(biāo)準(zhǔn)輸出日志路徑,可選參數(shù)為 `自定義` `AUTO` `NONE`,`自定義`將日志寫到自定義路徑,可用的變量有`group_name`, `host_node_name`, `process_num`, `program_name`, `here`(配置文件目錄);`NONE`不創(chuàng)建日志;`AUTO` 又supervisord自動選擇路徑,并且當(dāng)supervisord服務(wù)重新啟動時原來自動創(chuàng)建的日志以及日志的備份文件會被刪除。默認(rèn)為AUTO
stdout_logfile_maxbytes=1MB ; 標(biāo)準(zhǔn)輸出日志單個文件最大大小,如果超過指定大小會將日志文件備份,可用的單位 KB MB GB。如果設(shè)置為0則表示不限制文件大小。默認(rèn)為50MB
stdout_logfile_backups=10  ; 標(biāo)準(zhǔn)輸出日志文件最大備份數(shù)。默認(rèn)為10
stdout_capture_maxbytes=1MB ; 當(dāng)進(jìn)程處于“stdout capture mode”模式下寫入到FIFO隊列最大字節(jié)數(shù),可用單位 KB MB GB。默認(rèn)為0,詳細(xì)說明見[capture-mode](http://supervisord.org/logging.html#capture-mode)
stdout_events_enabled=false ; 
        ;以下配置項配置錯誤輸出的日志參數(shù)。和上面標(biāo)準(zhǔn)輸出配置相同。
stderr_logfile=/a/path  ;
stderr_logfile_maxbytes=1MB ;
stderr_logfile_backups=10  ;
stderr_capture_maxbytes=1MB ;
stderr_events_enabled=false ;
environment=A="1",B="2"  ; 環(huán)境變量設(shè)置,可用的變量有 `group_name`, `host_node_name`, `process_num`, `program_name`, `here`。 默認(rèn)為空。
serverurl=AUTO    ; override serverurl computation (childutils)

必要參數(shù)只有 command,其他未可選參數(shù)。 [program:x] 自定義的程序名不能重復(fù) 配置示例管理tornado應(yīng)用

需要啟動4個進(jìn)程,分別監(jiān)聽四個連續(xù)端口(20081 – 20084)。

將錯誤輸出定向到標(biāo)準(zhǔn)輸出,每個端口標(biāo)準(zhǔn)輸出寫入到不同文件中,單個文件最大50MB,最多保存3個備份。

啟動前等待3秒。

supervisord啟動時自動啟動。程序運行出錯自動重啟,最大嘗試重啟次數(shù)3次。

[program:tornado-test]
command=/usr/bin/env python2.7 /home/user/tornado-test.py --port=%(process_num)s
process_name=%(program_name)s_port=%(process_num)s
numprocs=4
numprocs_start=20081
redirect_stderr=true
stdout_logfile=/tmp/tornado-test-%(process_num)s.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=3
autorestart=true
startsecs=3
startretries=3

管理nginx

nginx默認(rèn)運行狀態(tài)是后臺運行程序。supervisord不能管理此類程序需要,需要修改nginx主配置文件。

在nginx最外層加入daemon off;

最簡單的配置。

[program:nginx]
command=/usr/sbin/nginx ;建議使用絕對路徑。

supervisorctl

supervisor進(jìn)程管理工具,可以方便啟動停止進(jìn)程,查看程序日志,重新載入配置文件。

如果supervisord配置文件不再默認(rèn)位置,使用supervisorctl工具時需要指定配置文件路徑 supervisordctl -c 配置文件路徑

常用命令

supervisordctl status 查看進(jìn)程運行狀態(tài) supervisordctl start 進(jìn)程名 啟動進(jìn)程 supervisordctl stop 進(jìn)程名 關(guān)閉進(jìn)程 supervisordctl restart 進(jìn)程名 重啟進(jìn)程 supervisordctl update 重新載入配置文件 supervisordctl shutdown 關(guān)閉supervisord supervisordctl clear 進(jìn)程名 清空進(jìn)程日志 supervisordctl 進(jìn)入到交互模式下。使用help查看所有命令。

start stop restart + all 表示啟動,關(guān)閉,重啟所有進(jìn)程。

如果一個進(jìn)程啟動了多個副本,例如上文tornado-test。

關(guān)閉所有副本

相關(guān)文章

  • Python簡單網(wǎng)絡(luò)編程示例【客戶端與服務(wù)端】

    Python簡單網(wǎng)絡(luò)編程示例【客戶端與服務(wù)端】

    這篇文章主要介紹了Python簡單網(wǎng)絡(luò)編程,詳細(xì)介紹了客戶端與服務(wù)端的具體實現(xiàn)技巧與相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05
  • Python PyAutoGUI實現(xiàn)自動化任務(wù)應(yīng)用場景示例

    Python PyAutoGUI實現(xiàn)自動化任務(wù)應(yīng)用場景示例

    這篇文章主要為大家介紹了Python PyAutoGUI實現(xiàn)自動化任務(wù)應(yīng)用場景示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python re的findall和finditer的區(qū)別詳解

    python re的findall和finditer的區(qū)別詳解

    這篇文章主要介紹了python re的findall和finditer的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python中裝飾器高級用法詳解

    Python中裝飾器高級用法詳解

    這篇文章主要介紹了Python中的裝飾器的高級用法,以實例形式詳細(xì)的分析了Python中的裝飾器的使用技巧及相關(guān)注意事項
    2017-12-12
  • python打印9宮格、25宮格等奇數(shù)格 滿足橫豎斜相加和相等

    python打印9宮格、25宮格等奇數(shù)格 滿足橫豎斜相加和相等

    這篇文章主要為大家詳細(xì)介紹了python打印9宮格、25宮格等奇數(shù)格,滿足橫豎斜相加和相等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python檢驗用戶輸入密碼的復(fù)雜度

    Python檢驗用戶輸入密碼的復(fù)雜度

    這篇文章主要介紹了Python檢驗用戶輸入密碼的復(fù)雜度,在用戶設(shè)置密碼的時候檢測輸入的密碼大小寫數(shù)字等,需要的朋友可以參考下
    2023-04-04
  • 使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)

    使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)

    這篇文章主要為大家介紹了使用Python PIL庫讀取文件批量處理圖片大小實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • python如何獲取list字典的交集、并集和差集

    python如何獲取list字典的交集、并集和差集

    在Python編程中,對列表(list)進(jìn)行去重可通過set運算符法和set函數(shù)法實現(xiàn),多個列表的交、并、差集也能簡便操作,此外,字典(dict)的鍵(keys)和鍵值對(items)的獲取也是常用技巧,這些操作方法不僅提高了代碼的簡潔性,也增強了數(shù)據(jù)處理的效率
    2024-09-09
  • 一文掌握Python正則表達(dá)式

    一文掌握Python正則表達(dá)式

    這篇文章主要介紹了Python正則表達(dá)式的相關(guān)知識,主要包括re模塊的使用及正則表達(dá)式基礎(chǔ)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Python登錄接口如何獲取token并保存到文件中

    Python登錄接口如何獲取token并保存到文件中

    這篇文章主要介紹了Python登錄接口如何獲取token并保存到文件中問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論