プロセスの死活監視等を行うためのデーモン化ツールの一つ supervisor の簡単な使い方を記載します。
インストール
apt や yum によってインストールする場合は以下のようになります。
sudo apt install supervisor
sudo yum install supervisor
インストールされたファイルを確認]します。
$ dpkg -L supervisor
...
/usr/bin/supervisorctl
/usr/bin/supervisord
/etc/supervisor/supervisord.conf
/etc/init.d/supervisor
二つのコマンドについては man も追加されています。
man supervisord
man supervisorctl
supervisord の起動
supervisord で管理するプログラムを追加するためには、こちらのドキュメントにしたがって設定ファイルを追加します。
設定ファイル
動きを確認するために、以下のような設定を追加してみます。
chmod a+x /home/vagrant/myprog.bash
/home/vagrant/myprog.bash
#!/bin/bash
while :; do
echo "Hello, world!"
sleep 1
done
/etc/supervisor/conf.d/myprog.conf
[program:myprog]
command=/home/vagrant/myprog.bash
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/myprog.log
stderr_logfile=/var/log/supervisor/myprog-error.log
user=vagrant
directory=/home/vagrant/
environment=
起動
管理するプロセスではなく supervisor 自身 (supervisord) の起動です。
sudo /etc/init.d/supervisor start
直接 supervisord を操作 (-n で supervisord をデーモン化しない)
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisord -c /etc/supervisor/supervisord.conf -n
既に supervisord が起動されている場合は以下のようなエラーが出ます。
Another program is already listening on a port that one of our HTTP servers is configured to use.
登録したプログラムのログが確認できます。
$ tailf /var/log/supervisor/myprog.log
Hello, world!
Hello, world!
Hello, world!
Hello, world!
...
supervisorctl による操作
sudo supervisorctl {status|restart|stop|start} {all|myprog}
リモートホストの supervisord を操作
supervisord の設定ファイルで接続を許可するホストを設定できます。セキュリティ上問題はありますが、例えば以下のようにすると任意のホストからパスワードなしで接続できます。
/etc/supervisor/supervisord.conf
[inet_http_server]
port = 0.0.0.0:9001
接続する際は -s オプションでリモートホストを指定します。
supervisorctl -s http://xxx.xxx.xxx.xxx:9001 status
低レイヤーのプログラミングとOS開発が趣味。C言語を使っています。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。





