一、什麼是Supervisor
Supervisor是一種進程管理工具,可用於將多個後台進程捆綁到同一主機上,並在運行時自動管理它們。 它可以增強我們的應用程序:
1、自動啟動應用程序並監控其運行狀態;
2、在應用程序意外掛掉時自動重啟;
3、記錄應用程序的輸出日誌等。
Supervisor可說是一個大殺器,讓我們的應用程序管理變得輕鬆、高效,減少故障和失誤。
二、安裝Supervisor
首先我們要安裝Supervisor,打開Ubuntu的終端,輸入以下命令:
sudo apt-get install supervisor
安裝Supervisor後,默認會在 /etc/supervisor/conf.d/ 目錄下生成一個示例配置文件,以示常式序「hello program」為例,可以參考以下示例:
[program:hello]
command=/bin/bash -c 'cd /app/hello && php hello.php'
autostart=true
autorestart=unexpected
user=www
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
hello為我們的應用程序名,即一個進程,command中填寫運行程序的命令,如docker啟動命令、任務調度命令等,可以執行任意命令;user為運行應用程序的用戶;autostart和autorestart決定了當Supervisor服務啟動、執行或者意外終止(如程序崩潰)時是否自動重啟該進程。
三、Supervisor的常用命令
下面是一些Supervisor的常用命令:
sudo service supervisor start #啟動Supervisor服務
sudo service supervisor stop #停止Supervisor服務
sudo service supervisor restart #重啟Supervisor服務
sudo supervisorctl reload #重新載入配置文件
sudo supervisorctl status #查看所有管理的應用程序狀態
sudo supervisorctl start hello #啟動進程hello
sudo supervisorctl stop hello #停止進程hello
sudo supervisorctl restart hello #重啟進程hello
sudo supervisorctl update #應用新的配置文件,啟動新的應用程序,重啟原來的應用程序。
四、多進程管理
當我們需要管理多個進程時,我們可以通過指定一個包含多個程序配置的 conf.d 文件夾和程序的其他文件來完成。為此,將以下內容添加到 /etc/supervisor/supervisord.conf 文件的 [include] 部分中:
[include]
files = /etc/supervisor/conf.d/*.conf
這樣,我們就可以在 /etc/supervisor/conf.d/ 目錄下放置任意數量的進程配置文件,由Supervisor來統一管理,而無需修改主配置文件或重啟它。 例如,在 /etc/supervisor/conf.d/ 目錄下創建了 進程1.conf 和 進程2.conf 文件後,可以使用以下命令重啟所有進程:
sudo supervisorctl update
sudo supervisorctl restart all
總結
無論是開發還是運維,Supervisor都是一個非常好用的工具。它可以幫助我們管理容易崩潰的進程,同時監視輸出和日誌。 而且,手動啟動和關閉多個進程非常費時,而使用Supervisor可以輕鬆自動化這些操作,有效提高生產力和可靠性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/256853.html