Python プロセス管理ツール Supervisor について理解します。

WBOY
リリース: 2022-07-28 15:34:46
転載
2401 人が閲覧しました

この記事では、Python に関する関連知識を提供します。スーパーバイザーは、Python で開発されたプロセス管理システムであり、ユーザーが Linux 上のプロセスを監視および制御できるようにします。通常のコマンド ラインを変換できます。プロセスは、バックグラウンドデーモンのプロセスを変更し、異常終了時に自動的に再起動することができるので、見てみましょう。

Python プロセス管理ツール Supervisor について理解します。

【関連する推奨事項: Python3 ビデオ チュートリアル ]

1. はじめに

Supervisor は Python で開発されたプロセス管理システムで、ユーザーが Linux 上のプロセスを監視および制御できるようにします。通常のコマンド ライン プロセスをバックグラウンド デーモン プロセスに変換し、異常終了時に自動的に再起動します。

#2. インストール

Supervisor は Linux と Mac をサポートしますが、Windows はサポートしません

この記事のシステムは次のとおりです:
centos、supervisor==4.2.4

pip3 install supervisor
ログイン後にコピー

インストールが完了すると、Python

bin ディレクトリ の下に次のようなファイルがいくつか存在します。

ls /usr/local/Python38/bin

echo_supervisord_conf
supervisorctl
supervisord
ログイン後にコピー

注: Python の bin ディレクトリには環境変数が追加されているため、これらのファイルは直接実行できます。

3. 設定ファイルを作成します

1. まず、設定ファイルを保存するディレクトリを作成します:

mkdirvisord

echo_supervisord_conf > supervisord/supervisord.conf
ログイン後にコピー

エラーが報告された場合、-bash: /etc/supervisord.conf: 権限が拒否されました。root ユーザーに切り替える必要があります。

2. 子プロセス設定ファイルのパスを作成します

mkdir -p supervisor/conf.d
ログイン後にコピー

後続のタスクでは、これをデーモン プロセスとして使用する必要があり、すべて設定ファイルが必要なので、これらの設定ファイルを conf に置きます。 d ディレクトリの下にあります。

3. 設定ファイルを変更します

vim supervisord/supervisord.conf
ログイン後にコピー

最後の部分を

[inclue]
# 因为我这里是放在root用户目录下,也可以放其它目录
files=/root/supervisord/conf.d/*.conf
ログイン後にコピー

に変更します4. 予備テスト

1. 開始supervisord

supervisord -c supervisord/supervisord.conf
ログイン後にコピー

これにより

supervisord が開始されます。その後、監視するタスクを彼に引き渡すことができます。停止した場合は、自動的に再起動されます。

バージョンの表示

supervisord -v
ログイン後にコピー

2. 簡単なシェルスクリプトを作成します

vim supervisord/test.sh
ログイン後にコピー

内容は次のとおりです

#!/bin/bash
while : 
do
    echo `date '+%Y-%m-%d %H:%m:%S'`
    sleep 1
done
ログイン後にコピー

簡単な実行、

Ctrl C Exit

3. 子プロセス設定ファイルを作成します

vim supervisor/conf.d/test.conf
ログイン後にコピー

test.conf内容は次のとおりです:

[program:test]
command=sh /root/supervisord/test.sh
priority=999                              ; 相对启动优先级,数值越小越优先,默认为999
autostart=true                            ; 在supervisor启动时自动启动,默认为true
autorestart=true                          ; 在意外退出时重新启动,默认为true
startsecs=10                              ; 子进程启动多少秒后状态为running则认为启动成功,默认为1
startretries=3                            ; 尝试启动的最大次数,默认为3
exitcodes=0,2                             ; 进程的预期退出代码列表,默认为0
stopsignal=QUIT                           ; 终止进程的信号,默认为TERM
stopwaitsecs=10                           ; 在SIGKILL之前等待的最大秒数,默认为10
user=root                                 ; 在某用户下设置uid来启动程序,默认不切换用户
redirect_stderr=true                      ; 是否重定向stdout和stderr,默认为false
stdout_logfile=/tmp/supervisor.stdout.log  ; stdout的输出文件,默认为AUTO
stdout_logfile_maxbytes=50MB              ; stdout最大文件大小,默认为50MB
stdout_logfile_backups=10                 ; stdout文件备份数,设为0则不备份,默认为10
ログイン後にコピー

実際には、あなただけが3 つのパラメータを設定する必要がありますが、他のパラメータについては心配する必要はありません:

  • command=sh /root/supervisord/test.sh: サブプロセスの起動コマンド;
  • stdout_logfile=/tmp/supervisor.stdout.log: ログ;
  • program:test: プロセス名は ですtest. プロセスを任意の日に停止および開始したい場合は、プロセス名が必要です。
現在のファイル ディレクトリ構造は次のとおりです:

yum install tree
tree supervisord

supervisord
├── conf.d
│   └── test.conf
├── supervisord.conf
└── test.sh
ログイン後にコピー

4。設定を再読み取り、子プロセスを更新します。

supervisord が開始されているため、ps -ef | grep supervisord.conf を通じて表示できます。サブプロセス設定ファイルが追加されたため、再ロードする必要があります:

まず

supervisord ディレクトリに移動します: cd supervisord。そうしないと、次のコマンドを実行する際に問題が発生します。コマンド。

supervisorctl reread
ログイン後にコピー
ログイン後にコピー

プロセスのステータスを再度確認してください

supervisorctl status
ログイン後にコピー
ログイン後にコピー

結果:

テスト実行中 pid 30278、稼働時間 1:29:41

名前

test のプロセスはデーモン プロセスとしてバックグラウンドですでに実行されています。これを強制終了しましょう:

kill 30278
ログイン後にコピー

もう一度

supervisorctl status を実行すると、ステータスは starting からすぐに running に変わります。その後、supervisord の役割はすでに明らかであり、タスクを自動的に監視するのに役立ちます。

注: 子プロセスの追加、削除、開始、停止に関連するコマンドについては、付録を参照してください。

5. Web インターフェイス

Web インターフェイスはあまり役に立ちません。つまり、プロセスを開始または一時停止したい場合に、次のように入力する必要はありません。コマンド。

vim supervisord.conf
ログイン後にコピー

Uncomment

[inet_http_server]
port=*:9001                ; 此处改为*便于调试
ログイン後にコピー

supervisord を再起動

supervisorctl reload
ログイン後にコピー
ログイン後にコピー

ブラウザ アクセス: linux_ip:9001.

付録:visorctl 共通コマンド

新しい設定ファイル、reload

supervisorctl reread
ログイン後にコピー
ログイン後にコピー

設定ファイルの変更、reload

supervisorctl update
ログイン後にコピー

スーパーバイザの再起動d

supervisorctl reload
ログイン後にコピー
ログイン後にコピー

すべてのプロセス ステータスの表示

supervisorctl status
ログイン後にコピー
ログイン後にコピー

表示プロセス ステータスの指定

supervisorctl status <name>
ログイン後にコピー

すべての子プロセスを開始

supervisorctl start all
ログイン後にコピー

指定した子プロセスを開始

supervisorctl start <name>
ログイン後にコピー

すべての子プロセスを再開

supervisorctl restart all
ログイン後にコピー

指定した子プロセスを再開

supervisorctl restart <name>
ログイン後にコピー

すべての子プロセスを停止します

supervisorctl stop all
ログイン後にコピー

指定した子プロセスを停止します

supervisorctl stop <name>
ログイン後にコピー

子プロセスをプロセス グループに追加します

supervisorctl add <name>
ログイン後にコピー

子プロセスをプロセス グループから削除するには、次の手順が必要です。まず停止します。注: 削除後、再読み込みと更新を使用してプロセスを再実行する必要があります

supervisorctl reomve <name>
ログイン後にコピー

[関連する推奨事項:

Python3 ビデオ チュートリアル ]

以上がPython プロセス管理ツール Supervisor について理解します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート