5分で使い始める Supervisor
初めに
個人的に利用する機会があったので、Supervisor
の利用方法をここにまとめておきます。
Supervisorとは?
簡単に言えば、プロセス監視ツール。
例えばLinux上でずっと動いているPythonプログラムがあって、これが異常終了したりした場合に再起動したりの管理を行ってくれるツール。
使い方
インストール
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
#!/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