linuxバックグラウンドプロセス管理ツールsupervisor

1661 ワード

Linuxのバックグラウンドプロセスの実行には、nohup、screenなどいくつかの方法がありますが、サービスプログラムであれば、バックグラウンドで確実に実行するには、daemonにする必要があります.プロセスの状態を監視することができ、意外な終了時に自動的に再起動することができます.
supervisorはPythonで開発された汎用的なプロセス管理プログラムで、普通のコマンドラインプロセスをバックグラウンドdaemonに変更し、プロセス状態を監視し、異常終了時に自動的に再起動することができます.

supervisorのインストール


Debian/Ubuntuはaptで直接インストールできます.
# apt-get install supervisor 

次に、自分で開発したアプリケーションにプロファイルを作成し、supervisorに管理させます.各プロセスのプロファイルは、/etc/supervisor/conf.d/ディレクトリの下に個別に分割できます.confは拡張子として、例えばapp.confはgunicornのプロセスを定義します.
[program:app] command=/usr/bin/gunicorn -w 1 wsgiapp:application directory=/srv/www user=www-data 

ここで、プロセスappは[program:app]で定義され、commandはコマンドであり、directoryはプロセスの現在のディレクトリであり、userはプロセスが実行するユーザーIDである.
supervisorを再起動し、プロファイルを有効にし、コマンドsupervisorctlを実行してプロセスを開始します.
# supervisorctl start app 

プロセスの停止:
# supervisorctl stop app 

コマンドラインで変数を使用する場合は、shellスクリプトを自分で作成する必要があります.
#!/bin/sh /usr/bin/gunicorn -w `grep -c ^processor /proc/cpuinfo` wsgiapp:application 

次に,x権限を加えてcommandをそのshellスクリプトに指し示せばよい.
supervisorには多くのオプションがあります.デフォルトのautorestartはunexpected(異常終了)です.詳細はsupervisorドキュメントを参照してください.