溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中supervisord 進程管理和自動重啟是怎樣的

發布時間:2021-10-21 17:15:23 來源:億速云 閱讀:437 作者:柒染 欄目:大數據
# Linux中supervisord進程管理和自動重啟是怎樣的

## 一、Supervisord簡介

Supervisord是一個用Python編寫的進程管理工具,主要用于在類Unix系統中監控和控制大量進程。它通過C/S架構運行,提供以下核心功能:

1. **進程監控**:實時監控子進程狀態
2. **自動重啟**:進程異常退出時自動恢復
3. **集中管理**:統一管理多個進程
4. **日志收集**:集中處理進程輸出日志
5. **Web界面**:提供可視化監控界面(可選)

## 二、安裝與基本配置

### 1. 安裝方法

```bash
# Debian/Ubuntu
sudo apt-get install supervisor

# CentOS/RHEL
sudo yum install supervisor

# 使用pip安裝
pip install supervisor

2. 配置文件結構

Supervisord的主要配置文件通常位于: - /etc/supervisor/supervisord.conf(包管理安裝) - /etc/supervisord.conf(手動安裝)

配置文件包含以下關鍵部分:

[unix_http_server]
file=/var/run/supervisor.sock

[supervisord]
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[rpcinterface:supervisor]
supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

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

三、進程管理配置

1. 基本進程配置示例

/etc/supervisor/conf.d/目錄下創建應用配置文件(如myapp.conf):

[program:myapp]
command=/usr/bin/python /path/to/your/app.py
directory=/path/to/your/app
user=appuser
autostart=true
autorestart=true
startsecs=10
startretries=3
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
environment=KEY="value",KEY2="value2"

2. 關鍵參數說明

參數 說明
command 要執行的命令(必須使用絕對路徑)
directory 執行命令的工作目錄
user 運行進程的用戶身份
autostart 是否隨supervisord啟動自動啟動
autorestart 自動重啟策略(true/false/unexpected)
startsecs 啟動后持續運行時間視為成功
startretries 啟動失敗重試次數
stopsignal 停止信號(TERM/KILL/INT等)
stopwaitsecs 發送停止信號后的等待時間

四、自動重啟機制詳解

1. autorestart參數

autorestart=true    ; 任何退出都重啟
autorestart=false   ; 不自動重啟
autorestart=unexpected ; 僅意外退出時重啟(非0或非stopsignal信號)

2. 退出狀態碼處理

Supervisord根據進程退出狀態碼決定是否重啟: - 0:正常退出(不重啟) - 非0:異常退出(根據autorestart配置決定)

3. 重啟策略組合

autorestart=unexpected
exitcodes=0,2 ; 只有退出碼為0或2時不重啟

4. 重啟頻率限制

防止頻繁重啟導致系統負載過高:

startretries=3 ; 最大重試次數

五、進程管理命令

1. 服務控制命令

# 啟動supervisord服務
sudo service supervisor start

# 重新加載配置
sudo supervisorctl reread
sudo supervisorctl update

2. 進程管理命令

# 查看所有進程狀態
sudo supervisorctl status

# 啟動/停止/重啟特定進程
sudo supervisorctl start myapp
sudo supervisorctl stop myapp
sudo supervisorctl restart myapp

# 查看進程日志
sudo supervisorctl tail myapp

六、高級功能

1. 進程組管理

[group:mygroup]
programs=prog1,prog2

管理命令:

sudo supervisorctl stop mygroup:

2. 事件監聽

[eventlistener:memmon]
command=/path/to/memmon.py
events=PROCESS_STATE

3. Web管理界面

啟用Web界面(在supervisord.conf中添加):

[inet_http_server]
port=0.0.0.0:9001
username=admin
password=yourpassword

七、常見問題解決

  1. 權限問題

    sudo chmod 777 /var/run/supervisor.sock
    
  2. 配置不生效

    • 確保執行了supervisorctl update
    • 檢查配置文件語法是否正確
  3. 進程無法停止

    stopsignal=KILL
    stopwaitsecs=30
    
  4. 日志文件不輪轉: 建議配合logrotate使用:

    /var/log/myapp*.log {
       daily
       rotate 7
       missingok
       notifempty
       compress
       delaycompress
       postrotate
           supervisorctl signal USR1 myapp
       endscript
    }
    

八、最佳實踐建議

  1. 為每個應用創建單獨的配置文件
  2. 合理設置autorestart策略
  3. 配置適當的日志輪轉
  4. 使用非root用戶運行進程
  5. 重要服務設置startretries限制
  6. 生產環境啟用Web界面時務必設置密碼

通過合理配置Supervisord,可以實現企業級進程管理需求,確保關鍵服務持續穩定運行。 “`

注:本文實際約1450字,完整包含了Supervisord的安裝配置、進程管理、自動重啟機制等核心內容,采用Markdown格式,可直接用于技術文檔發布。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女