linuxバックグラウンドプロセス管理ツールsupervisor
1661 ワード
Linuxのバックグラウンドプロセスの実行には、nohup、screenなどいくつかの方法がありますが、サービスプログラムであれば、バックグラウンドで確実に実行するには、daemonにする必要があります.プロセスの状態を監視することができ、意外な終了時に自動的に再起動することができます.
supervisorはPythonで開発された汎用的なプロセス管理プログラムで、普通のコマンドラインプロセスをバックグラウンドdaemonに変更し、プロセス状態を監視し、異常終了時に自動的に再起動することができます.
Debian/Ubuntuはaptで直接インストールできます.
次に、自分で開発したアプリケーションにプロファイルを作成し、supervisorに管理させます.各プロセスのプロファイルは、/etc/supervisor/conf.d/ディレクトリの下に個別に分割できます.confは拡張子として、例えばapp.confはgunicornのプロセスを定義します.
ここで、プロセスappは[program:app]で定義され、commandはコマンドであり、directoryはプロセスの現在のディレクトリであり、userはプロセスが実行するユーザーIDである.
supervisorを再起動し、プロファイルを有効にし、コマンドsupervisorctlを実行してプロセスを開始します.
プロセスの停止:
コマンドラインで変数を使用する場合は、shellスクリプトを自分で作成する必要があります.
次に,x権限を加えてcommandをそのshellスクリプトに指し示せばよい.
supervisorには多くのオプションがあります.デフォルトのautorestartはunexpected(異常終了)です.詳細はsupervisorドキュメントを参照してください.
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ドキュメントを参照してください.