Supervisor:進程管理工具的簡單使用

      Supervisor是用Python開發的一個client/server服務,是Unix系統和類Unix系統下的一個進程管理工具。它可以很方便的監聽、啓動、停止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它重新拉起,很方便的做到進程自動恢復的功能,不再需要自己寫shell腳本來控制。

在Mac系統下,我們使用brew進行安裝supervisor這個管理工具,安裝命令是brew install supervisor:

從安裝的信息中可以看到,有這樣的一段話:

To have launchd start supervisor now and restart at login:
 brew services start supervisor
Or, if you don't want/need a background service you can just run:
 supervisord -c /usr/local/etc/supervisord.ini

這是supervisor的啓動命令,brew services start supervisor是後臺守護進程啓動,另外一個就是在Terminal中啓動運行,我們就用命令brew services start supervisor來啓動supervisor:

使用命令supervisorctl進入命令管理界面:

會發現有一個refused connection的警告出現,那是我們啓動命令管理界面的時候,沒有指定配置文件,我們指定配置文件進行啓動命令管理界面:

如上圖,輸入help可以看到命令管理界面支持的命令,下面就使用supervisor管理一個python進程,supervisor的配置文件和nginx的配置有着相似的地方,就是有一個主配置文件,那就是supervisord.ini,在這個配置文件的最後,有着這樣配置:

所以其他的進程管理的配置文件我們放在supervisor.d的文件夾裏,在這個文件夾裏,我們新建一個myschool的進程管理配置文件:

其中[program:myschool]是我們對這個進程配置起的一個名稱;

command是運行這個進程的指令;

directory是這個項目的主目錄;

user是運行的用戶;

autostart是自動啓動;

autorestart是自動重啓,這種情況是在進程不小心給掛掉了之後的保障機制;

startretries是啓動重試次數,也就是啓動不成功,重試的次數;

stdout_logfile和stderr_logfile是日誌記錄的文件路徑

寫完這個文件之後,我們進入supervisor的命令管理界面進行reload,reload之後可以輸入status查看:

這時我們輸入訪問的地址,看一下服務是否正常:


服務訪問正常,這個進程就被supervisor給管理起來了!當然我們也可以直接在命令行界面直接操作,操作命令如下:

supervisorctl stop test #終止特定的進程
supervisorctl stop all #終止所有進程
supervisorctl start test #開啓特定的進程
supervisorctl start all #開啓所有進程
sudo supervisorctl status #查看進程狀態

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章