Supervisor 是一個用 Python 編寫的進程監控工具,用於管理和監控 Linux/Unix 系統中的進程,確保它們在崩潰時能夠自動重啓,或者始終保持在運行狀態。 以下是配置 Supervisor 的基本步驟和常見配置選項:
1. 安裝 Supervisor:
在大多數基於 Debian/Ubuntu 的系統中,可以使用 apt 安裝 Supervisor:
sudo apt update
sudo apt install supervisor
對於基於 Red Hat/CentOS 的系統,使用 yum 或 dnf 安裝:
sudo yum install supervisor # 對於較舊的系統
sudo dnf install supervisor # 對於較新的系統
2. 配置文件:
Supervisor 的主配置文件通常位於 /etc/supervisord.conf。您也可以在此目錄下創建子配置文件,放置在 /etc/supervisor/conf.d/ 目錄下,以保持配置的模塊化。子配置文件通常以 .conf 爲擴展名。
3. 基本配置項:
/etc/supervisord.conf 或 /etc/supervisor/conf.d/*.conf:
[unix_http_server] ; Unix socket 文件路徑和權限
file=/var/run/supervisor.sock ; (默認路徑)
chmod=0700 ; socket 文件權限
[supervisord] ; Supervisor 主程序配置
logfile=/var/log/supervisor/supervisord.log ; 日誌文件路徑
pidfile=/var/run/supervisord.pid ; PID 文件路徑
childlogdir=/var/log/supervisor ; 子進程日誌目錄
[rpcinterface:supervisor] ; RPC 接口配置
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl] ; Supervisor 控制檯配置
serverurl=unix:///var/run/supervisor.sock ; 與主程序通信的 socket 地址
[program:your_program_name] ; 進程配置,每個要監控的進程需要一個這樣的塊
command=/path/to/your/command --arg1 value1 --arg2 value2 ; 要運行的命令及參數
directory=/path/to/working/directory ; 命令的工作目錄(可選)
user=your_username ; 以哪個用戶身份運行(可選)
autostart=true ; 是否隨 Supervisor 啓動時自動啓動(默認爲 true)
autorestart=true ; 程序退出時是否自動重啓(默認爲 unexpected)
startsecs=5 ; 程序啓動後等待其穩定運行的秒數(默認爲 1)
startretries=3 ; 啓動失敗時重試次數(默認爲 3)
stopsignal=QUIT ; 用於停止進程的信號(默認爲 TERM)
stopwaitsecs=10 ; 發送停止信號後等待進程終止的秒數(默認爲 0)
stdout_logfile=/var/log/supervisor/your_program_name.log ; 標準輸出日誌文件(可選)
stderr_logfile=/var/log/supervisor/your_program_name.err.log ; 標準錯誤日誌文件(可選)
environment=VAR1=value1,VAR2=value2 ; 設置環境變量(可選)
priority=999 ; 進程優先級,數字越小優先級越高(默認爲 999)
4. 添加要監控的進程:
在 [program:your_program_name] 部分,爲每個要由 Supervisor 管理的進程配置一個獨立的配置塊。配置項包括:
- command: 要運行的命令及參數。
- directory: (可選)命令的工作目錄。
- user: (可選)以哪個用戶身份運行。
- autostart: 是否隨 Supervisor 啓動時自動啓動。
- autorestart: 程序退出時是否自動重啓。
- startsecs: 程序啓動後等待其穩定運行的秒數。
- startretries: 啓動失敗時重試次數。
- stopsignal: 用於停止進程的信號。
- stopwaitsecs: 發送停止信號後等待進程終止的秒數。
- stdout_logfile: 標準輸出日誌文件。
- stderr_logfile: 標準錯誤日誌文件。
- environment: 設置環境變量。
- priority: 進程優先級,數字越小優先級越高。
- 啓動和管理 Supervisor: 啓動 Supervisor:
sudo systemctl start supervisord
啓用開機自啓:
sudo systemctl enable supervisord
查看狀態:
sudo systemctl status supervisord
使用 Supervisorctl 控制檯: 啓動控制檯:
sudo supervisorctl
在控制檯中,可以進行以下操作:
列出所有進程:
supervisorctl status
啓動進程:
supervisorctl start your_program_name
停止進程:
supervisorctl stop your_program_name
重啓進程:
supervisorctl restart your_program_name
查看進程日誌:
supervisorctl tail your_program_name
- 更新配置後重啓 Supervisor: 當修改了配置文件後,需要重新加載並重啓 Supervisor 以應用更改:
sudo supervisorctl reread
sudo supervisorctl update
以上就是 Supervisor 的基本配置過程和常用配置選項。根據實際需求調整配置文件,確保所需進程被正確監控和管理。