これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド Supervisord です。
プログラム:
NAME
Supervisord - Supervisord ドキュメンテーション
スーパーバイザは、ユーザーが数値を監視および制御できるクライアント/サーバー システムです。
UNIX 系オペレーティング システム上のプロセスの数。
これは、launchd、daemontools、runit などのプログラムと同じ目標の一部を共有しています。 ようではない
これらのプログラムの一部は、代わりに実行することを意図したものではありません。 INIT 「プロセスID」として
1"。代わりに、プロジェクトまたはプロジェクトに関連するプロセスを制御するために使用することを目的としています。
顧客に提供され、ブート時に他のプログラムと同様に開始されることを目的としています。
マニュアル
スーパーバイザー
スーパーバイザーのサーバー部分には名前が付けられます スーパーバイザー. スタートの子を担当
独自の呼び出しでのプログラム、クライアントからのコマンドへの応答、クラッシュした再起動、または
サブプロセスを終了し、そのサブプロセスをログに記録する (Linuxで言うところのstdout) stderr 出力、生成、
サブプロセスのライフタイムのポイントに対応する「イベント」を処理します。
サーバー プロセスは構成ファイルを使用します。 これは通常、次の場所にあります。
/etc/supervisord.conf. この構成ファイルは、「Windows-INI」スタイルの構成ファイルです。 それ
適切なファイルシステムのアクセス許可を使用して、このファイルを安全に保つことが重要です。
暗号化されていないユーザー名とパスワードが含まれています。
Running: スーパーバイザー
このセクションでは、 ビンディール 実行方法を説明するときに、 スーパーバイザー
スーパーバイザーctl コマンド。 これは、Python インストールにある「bindir」ディレクトリです。
で構成されています。 たとえば、次のようにしてインストールされた Python のインストールの場合、
。/設定 --prefix=/usr/local/py; 作る; make install, ビンディール になる /usr/local/py/bin.
異なるプラットフォーム上の Python インタープリターは異なる ビンディール。 の出力を見てください
setup.py install 自分の場所がどこにあるのか分からない場合。
追加 a (AFCプログラム)
前 スーパーバイザー 少なくとも XNUMX つ追加する必要があります。
プログラム その構成へのセクション。 の プログラム セクションは、次のプログラムを定義します。
を呼び出したときに実行および管理されます。 スーパーバイザー 指図。 プログラムを追加するには、次のことが必要です。
編集 監視者.conf ファイルにソフトウェアを指定する必要があります。
最も簡単に実行できるプログラムの XNUMX つは UNIX です。 cat プログラム。 あ プログラム
それは実行されます cat 時 スーパーバイザー プロセスの起動を以下に示します。
[プログラム:foo]
コマンド=/ bin / cat
このスタンザは切り取り、 監視者.conf ファイル。 これは最も簡単です
コマンドを指定するだけなので、可能なプログラム構成。 プログラム構成
セクションには、ここには示されていない他の多くの構成オプションがあります。 見る
詳細については、programx_section を参照してください。
Running: スーパーバイザー
始めること スーパーバイザー走る $BINDIR/監視対象. 結果のプロセスはデーモン化されます
端末から切り離します。 操作ログを保持します $CWD/スーパーバイザー.ログ by
デフォルト。
を開始することができます。 スーパーバイザー を渡すことにより、フォアグラウンドで実行可能 -n その上のフラグ
コマンドライン。 これは、起動時の問題をデバッグするのに役立ちます。
警告:
日時 スーパーバイザー 起動すると、デフォルトで構成ファイルを検索します
場所 配合工業用化学製品の 現在 ワーキング ディレクトリにジョブを開始します。. セキュリティを意識するなら
の後に「-c」引数を指定したくなるでしょう。 スーパーバイザー コマンド指定
誰かにだまされないようにするための構成ファイルへの絶対パス
ローグを含むディレクトリ内からスーパーバイザーを実行する 監視者.conf ファイルにソフトウェアを指定する必要があります。
スーパーバイザーがこれなしでルートとして起動されると、警告が発せられます -c 引数。
によって制御されるプログラムのセットを変更するには スーパーバイザー、編集 監視者.conf file
kill -HUP または再起動する スーパーバイザー 処理する。 このファイルにはいくつかの例があります
プログラム定義。
当学校区の スーパーバイザー command は、多数のコマンド ライン オプションを受け入れます。 これらの各コマンド
行オプションは、構成ファイル内の同等の値をオーバーライドします。
スーパーバイザー コマンドライン オプション
-c FILE, --configuration=FILE
への道 スーパーバイザー 設定ファイル
-n, --ノデーモン
ラン スーパーバイザー 前景に。
-h, - 助けて
表示 スーパーバイザー コマンドヘルプ。
-u USER, --user =USER
UNIX ユーザー名または数値ユーザー ID。 もしも スーパーバイザー root ユーザーとして起動し、
起動時にできるだけ早くこのユーザーに setuid します。
-m オクタル, --umask=オクタル
によって使用される umask を表す 022 進数 (例: XNUMX) スーパーバイザー
それが始まった後。
-d パス, -ディレクトリ=パス
Supervisord をデーモンとして実行する場合は、デーモン化する前にこのディレクトリに cd します。
-l FILE, --logfile =FILE
Supervisord アクティビティ ログとして使用するファイル名パス。
-y バイト, --logfile_maxbytes=バイト
ローテーションが発生する前の Supervisord アクティビティ ログ ファイルの最大サイズ。 値
たとえば、「1」は 1 バイト、「1MB」は 1 メガバイト、「1GB」は XNUMX です。
ギガバイト。
-y NUM, --logfile_backups=NUM
保持する Supervisord アクティビティ ログのバックアップ コピーの数。 各
ログファイルのサイズは logfile_maxbytes.
-e LEVEL, --loglevel =LEVEL
スーパーバイザーがアクティビティ ログに書き込むログ レベル。 有効
レベルは トレース, debug, info, 警告する, エラー, 重大な.
-j FILE, --pidfile =FILE
Supervisord が pid ファイルを書き込むファイル名。
-i STRING, -識別子=STRING
のこのインスタンスのさまざまなクライアント UI によって公開される任意の文字列識別子
スーパーバイザー
-q パス, --childlogdir=パス
スーパーバイザーが書き込むディレクトリへのパス (既に存在している必要があります) AUTO
-mode 子プロセス ログ。
-k, --nocleanup
防ぐ スーパーバイザー クリーンアップの実行から(古いものの削除 AUTO プロセスログファイル)
起動時。
-a NUM, --minfds=NUM
Supervisord が使用できる必要があるファイル記述子の最小数
正常に開始する前に処理します。
-t, --strip_ansi
すべての子ログ プロセスから ANSI エスケープ シーケンスを取り除きます。
-v, - バージョン
Supervisord のバージョン番号を標準出力に出力して終了します。
--profile_options=LIST
プロファイリング用のカンマ区切りのオプション リスト。 原因 スーパーバイザー の下で走る
コンマ区切りのリストであるオプションに基づいて結果を出力します。
を提出してください: 累積の, 呼び出し, 発信者。 例えば 累積、呼び出し元.
--minprocs=NUM
Supervisord が使用できる必要がある OS プロセス スロットの最小数
正常に開始する前に処理します。
シグナル
当学校区の スーパーバイザー プログラムには、特定のアクションを実行させるシグナルが送信される場合があります
実行中です。
これらの信号のいずれかをシングルに送信できます スーパーバイザー プロセス ID。 このプロセス ID
で表されるファイルにあります。 pidファイル 内のパラメータ [監修]
構成ファイルの (デフォルトでは $CWD/スーパーバイザーd.pid).
シグナル ハンドラ
シグターム
スーパーバイザー すべてのサブプロセスがシャットダウンします。 これには数秒かかる場合があります。
SIGINT
スーパーバイザー すべてのサブプロセスがシャットダウンします。 これには数秒かかる場合があります。
そんなに
スーパーバイザー すべてのサブプロセスがシャットダウンします。 これには数秒かかる場合があります。
シグアップ
スーパーバイザー すべてのプロセスを停止し、最初の構成から構成をリロードします
見つかったファイルを見つけて、すべてのプロセスを再起動します。
シグSR2
スーパーバイザー メイン アクティビティ ログとすべての子ログ ファイルを閉じて、再度開きます。
ランタイム セキュリティ
開発者は、その使用を保証するために最善を尽くしました スーパーバイザー として実行されているプロセス
root が意図しない権限昇格につながることはありません。 だが 警告 買い手. スーパーバイザーは
DJ Bernstein の daemontools のようなものほど妄想的ではありません。 スーパーバイザー
構成ファイルで任意のパスを指定できるようになり、データが保存される可能性があります
書いた。 任意のパス選択を許可すると、symlink から脆弱性が生じる可能性があります
攻撃します。 構成でパスを指定するときは注意してください。 であることを確認してください。
スーパーバイザー 権限のないユーザーは構成ファイルを読み書きできません。
スーパーバイザー パッケージによってインストールされたすべてのファイルが「正常な」ファイル許可保護を持っていること
設定。 さらに、次のことを確認してください。 パイソンパス 正気であり、すべてのPython標準
ライブラリ ファイルには、適切なファイル許可保護があります。
Running: スーパーバイザー 自動的に on スタートアップ
Supervisor のディストリビューション パッケージ バージョンを使用している場合は、すでに
ディストリビューションのサービス管理インフラストラクチャに統合されています。
次の場所に、さまざまなオペレーティング システム用のユーザー提供のスクリプトがあります。
https://github.com/Supervisor/initscripts
行き詰まった場合に備えて、Serverfault にはいくつかの回答があります。 認定条件 〜へ 自動的に start
スーパーバイザー on Linux (Ubuntu)
サブプロセス
スーパーバイザーの主な目的は、その中のデータに基づいてプロセスを作成および管理することです。
構成ファイル。 サブプロセスを作成することでこれを行います。 によって生成された各サブプロセス
スーパーバイザーは、その存続期間全体にわたって、supervisord (スーパーバイザー は
作成する各プロセスの親プロセス)。 子供が亡くなった場合、監督者に通知されます
によるその死 シグヒルド 信号を送信し、適切な操作を実行します。
非デーモン化 of サブプロセス
スーパーバイザーの下で実行されることを意図したプログラムは、それ自体をデーモン化すべきではありません。 代わりに、彼らは
フォアグラウンドで実行する必要があります。 それらは、元の端末から切り離すべきではありません
が開始されます。
プログラムがフォアグラウンドで実行されるかどうかを確認する最も簡単な方法は、次のコマンドを実行することです。
シェルプロンプトからプログラムを呼び出します。 端末の制御を戻す場合は、
しかし、実行を続けます。それ自体がデーモン化されており、それはほぼ間違いなく間違っています。
スーパーバイザーの下で実行する方法。 基本的にあなたを必要とするコマンドを実行したい
押す Ctrl+C 端末の制御を取り戻すため。 シェルプロンプトが返される場合
押す必要なく実行した後 Ctrl+C、スーパーバイザーの下では役に立ちません。 全て
プログラムにはフォアグラウンドで実行するオプションがありますが、それを行う「標準的な方法」はありません。
各プログラムのドキュメントを読む必要があります。
以下は、一般的なプログラムを起動することが知られている構成ファイルの例です。
スーパーバイザーの下の「フォアグラウンド」モード。
例 of (AFCプログラム) 構成
「実際の」プログラム構成の例を次に示します。
アパッチ 2.2.6
[プログラム:apache2]
command=/path/to/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
redirect_stderr=true
ツー ゾペ 2.X インスタンス XNUMXつ ZEO
【プログラム:ゼオ】
command=/パス/to/runzeo
優先度= 1
[プログラム:zope1]
コマンド=/パス/へ/インスタンス/ホーム/bin/runzope
優先度= 2
redirect_stderr=true
[プログラム:zope2]
コマンド=/パス/to/another/instance/home/bin/runzope
優先度= 2
redirect_stderr=true
Postgres 8.X
[プログラム:postgres]
コマンド=/パス/へ/ポストマスター
; 「高速」シャットダウンシグナル SIGINT を使用します
ストップシグナル=INT
redirect_stderr=true
OpenLDAP slapd
[プログラム:slapd]
コマンド=/path/to/slapd -f /path/to/slapd.conf -h ldap://0.0.0.0:8888
redirect_stderr=true
その他 例
でサービスを開始するために使用できるシェル スクリプトのその他の例 スーパーバイザー できる
で見つける http://thedjbway.b0llix.net/services.html. これらの例は、実際には
デーモンツール ただし、前提はスーパーバイザーと同じです。
フォアグラウンドでさまざまなプログラムを起動するためのレシピの別のコレクションが利用可能です
from http://smarden.org/runit/runscripts.html.
pidproxy (AFCプログラム)
一部のプロセス ( mysqldを)によって生成された実際のプロセスに送信されたシグナルを無視します
スーパーバイザー. 代わりに、これらの種類のプログラムによって「特別な」スレッド/プロセスが作成されます
シグナルの処理を担当します。 これは問題があるため、 スーパーバイザー できる
それ自体を作成するプロセスのみを強制終了します。 によって作成されたプロセスの場合 スーパーバイザー 作成します。
独自の子プロセス、 スーパーバイザー それらを殺すことはできません。
幸いなことに、これらのタイプのプログラムは通常、「pidfile」を書き込みます。
「特別な」プロセスの PID であり、プロセスを強制終了するために読み取られて使用されることを意図しています。 として
この場合の回避策、特別な pidproxy プログラムはこれらの種類の起動を処理できます
プロセスの。 の pidproxy プログラムは、プロセスを開始する小さなシムであり、
シグナルを受信すると、pidfile で指定された pid にシグナルを送信します。 サンプル
pidproxy 対応プログラムの構成プログラム エントリを以下に示します。
[プログラム:mysql]
command=/path/to/pidproxy /path/to/pidfile /path/to/mysqld_safe
当学校区の pidproxy プログラムはあなたの設定に入れられます $ビンディール スーパーバイザー装着時
(これは「コンソール スクリプト」です)。
サブプロセス 環境
サブプロセスは、起動に使用されたシェルの環境を継承します スーパーバイザー
プログラム。 によっていくつかの環境変数が設定されます。 スーパーバイザー それ自体が子供の
環境も含めて SUPERVISOR_ENABLED (プロセスが進行中であることを示すフラグ
スーパーバイザー制御)、 SUPERVISOR_PROCESS_NAME (構成ファイルで指定されたプロセス名
このプロセス)および SUPERVISOR_GROUP_NAME (構成ファイルで指定されたプロセス グループ名
子プロセス)。
これらの環境変数は、 [監修] セクション構成
名前付きオプション 環境 (すべてのサブプロセスに適用) または per- [プログラム:x]
環境 config オプション (オプション内で指定されたサブプロセスにのみ適用されます
[プログラム:x] セクション)。 これらの「環境」設定は付加的です。 つまり、それぞれ
サブプロセスの環境は次のもので構成されます。
シェル内で設定された環境変数は、supervisord の起動に使用されます...
... 追加 / オーバーライド ...
... 環境 variables セッションに 以内 環境 全体的な
設定オプション ...
... 追加 / オーバーライド ...
... スーパーバイザー固有 環境 variables
(SUPERVISOR_ENABLED, SUPERVISOR_PROCESS_NAME, SUPERVISOR_GROUP_NAME)..
... 追加 / オーバーライド ...
... 環境 variables セッションに 以内 プロセスごと
「環境」設定オプション。
によって実行されるシェルはありません スーパーバイザー サブプロセスを実行するとき、環境変数
など USER, パス, ホーム, SHELL, ログ名などはデフォルトから変更されていないか、
それ以外の場合は再割り当てされます。 これは、
からのプログラム スーパーバイザー でルートとして実行 user = 設定のスタンザ。 ようではない
cron, スーパーバイザー 「基本的な」環境を予測して上書きしようとしない
のような変数 USER, パス, ホーム, ログ名 ユーザー定義に対して setuid を実行するとき
中で user = プログラム構成オプション。 環境変数を設定する必要がある場合
それ以外の場合は、特定のシェル呼び出しによって設定される可能性のある特定のプログラム
内で明示的に行う必要があります。 環境= プログラム構成オプション。 例
これらの環境変数の設定方法は次のとおりです。
[プログラム:apache2]
command=/home/chrism/bin/httpd -c "ErrorLog /dev/stdout" -DFOREGROUND
ユーザー=クリスム
environment=HOME="/home/chrism",USER="chrism"
プロセス 米国
Supervisord によって制御されるプロセスは、常に次のいずれかの状態になります。
これらの状態名は、クライアントのさまざまなユーザー インターフェイス要素に表示される場合があります。
停止 (0)
停止要求によりプロセスが停止されたか、開始されていません。
起動 (10)
開始要求により、プロセスが開始されています。
ランニング (20)
プロセスは実行中です。
バックオフ (30)
プロセスは 起動 状態ですが、その後すぐに終了して移動できませんでした
ランニング でのみ停止させることができます。
停止しています (40)
停止要求により、プロセスが停止しています。
終了しました (100)
プロセスが終了しました ランニング 状態 (予想または予想外)。
FATAL (200)
プロセスを正常に開始できませんでした。
UNKNOWN (1000)
プロセスは不明な状態です (スーパーバイザー プログラミングエラー)。
スーパーバイザーの下で実行される各プロセスは、次のようにこれらの状態を経て進行します。
有向グラフ。
[画像: サブプロセスの状態遷移グラフ] [画像] サブプロセスの状態遷移
グラフ.UNINDENT
プロセスは 停止 管理者によって停止されたかどうか、または停止されたかどうかを示します
開始されたことはありません。
自動再起動プロセスが バックオフ 状態、それは自動的に
によって再開された スーパーバイザー. 間で切り替わります。 起動 バックオフ それまでの状態
の数が原因で開始できないことが明らかになります。 開始再試行 持っています
最大値を超えた時点で、 FATAL 州。 各スタート
再試行には時間がかかります。
プロセスが 終了しました 状態になると、自動的に再起動します。
· その場合は決して 自動再起動 パラメータは false.
· 無条件に 自動再起動 パラメータは true.
· 条件付きで 自動再起動 パラメータは 予期しない. で終了した場合
で定義された終了コードのいずれとも一致しない終了コード 終了コード
プロセスの設定パラメータを変更すると、再起動されます。
プロセスは、 終了しました 〜へ ランニング 構成された結果として
条件付きまたは無条件で自動再起動します。 間の遷移の数
ランニング 終了しました いかなる方法でも制限されません: 構成を作成することが可能です
終了したプロセスを際限なく再起動します。 これは機能であり、バグではありません。
自動再起動されたプロセスは、最終的に FATAL
(この状態から手動で再起動する必要があります)。
プロセスは 停止しています 管理上の停止要求を介して状態、および
その後、 停止 でのみ停止させることができます。
正常に停止できないプロセスは、 停止しています 永遠の状態。
通常の操作中にこの状況に到達することはありません。
プロセスはファイナルに応答しませんでした シグキル スーパーバイザーから送信された信号。
UNIX では「不可能」です。
呼び出すために常にユーザー アクションを必要とする状態遷移は次のとおりです。
FATAL -> 起動
ランニング -> 停止しています
常にではありませんが通常、呼び出すためにユーザー アクションが必要な状態遷移は、次のとおりです。
これら、例外は次のとおりです。
停止 -> 起動 (プロセスが自動開始するように構成されている場合は、supervisord の起動時を除く)
終了しました -> 起動 (プロセスが自動再起動するように構成されている場合を除く)
他のすべての状態遷移は、supervisord によって自動的に管理されます。
用語解説
デーモンツール
A プロセス コントロール by DJ バーンスタイン.
打ち上げ
A プロセス コントロール 中古 by Apple Mac OS X ではプロセス 1 として。
それを実行します A プロセス コントロール .
スーパーランス
にプラグインするさまざまなイベント リスナー実装を提供するパッケージ
プロセス メモリの使用状況とクラッシュ ステータスの監視に役立つスーパーバイザ:
http://pypi.python.org/pypi/superlance.
umask の略語 user mask: 現在のプロセスのファイル モード作成マスクを設定します。
詳細はこちら: http://en.wikipedia.org/wiki/Umask.
onworks.net サービスを使用してオンラインで Supervisord を使用する