プロセスの死活監視等を行うためのデーモン化ツールの一つ 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
関連記事
- 使い所が難しいマイナーな運用コマンドコマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
- ipコマンドの基本的な使い方ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
- プロセス関連のコマンドプロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
- rpmとyumのチートシートrpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
- メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...