⛓️

5分で使い始める Supervisor

2022/03/21に公開

初めに

個人的に利用する機会があったので、Supervisorの利用方法をここにまとめておきます。

Supervisorとは?

簡単に言えば、プロセス監視ツール。
例えばLinux上でずっと動いているPythonプログラムがあって、これが異常終了したりした場合に再起動したりの管理を行ってくれるツール。

http://supervisord.org/

使い方

インストール

ubuntuやdebianではaptでインストールを行います。

sudo apt update
sudo apt install supervisor

設定ファイル

設定ファイルは下記の場所にあります。

/etc/supervisor/supervisord.conf 

但し、下記のようにインクルードしているので、/etc/supervisor/conf.d/*.confに設定ファイルを追加していくのが良いと思う。

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

下記の用な感じで作成する。

sudo nano /etc/supervisor/conf.d/def.conf
[program:test]
command=/root/test.sh
autostart=true
autorestart=true
stopsignal=QUIT
stdout_logfile=/var/log/supervisor/test-err.log
stderr_logfile=/var/log/supervisor/test-err.log

command:実行するコマンド
autostart:自動起動ON/OFF
autorestart:自動再起動ON/OFF
stopsignal:終了時に発行するシグナル
stopsignal:終了時に発行するシグナル
stdout_logfile:標準ログファイル
stderr_logfile:エラーログファイル

実行ファイルは下記のイメージ。

nano /root/test.sh
test.sh
#!/bin/bash
echo "this is pen"
sleep 5
#!/bin/bash
echo "this is pen"
sleep 5

実行方法

SystemDなどが入っている場合はSystemCtlから実行できる
※SystemDが入っているのであればそちらで同じようなことが出来るので、インストールする必要ないかも…

sudo systemctl start supervisord
sudo systemctl status supervisord

Dockerなどは直接実行する。(設定ファイルを指定する必要あり。)

/usr/bin/supervisord -c /etc/supervisor/supervisord.conf 

操作方法

supervisorctlコマンドで操作可能です。
supervisorctl {{command}}でコマンド操作か、supervisorctlによるCLIインターフェイスで操作も可能です。

再読み込み

設定ファイルを再読込する場合。

supervisorctl reload

プロセス操作

プロセスの操作を行う場合は開始:start,再起動:restart,停止:stop,状態:statusなどで操作できる。

supervisorctl start {name}
supervisorctl restart {name}
supervisorctl stop {name}
supervisorctl status {name}

全てのプロセスを再起動する場合は、allを指定すれば行ける。

supervisorctl start all
supervisorctl restart all
supervisorctl stop all
supervisorctl status all

Discussion