/usr/cluster/bin/pmfadm -c nametag [-a action] [[-e ENV_VAR= env.var…] | -E] [-n retries] [-t period] [-C level#] command [args-to-command…]
/usr/cluster/bin/pmfadm -k nametag [-w timeout] [signal]
/usr/cluster/bin/pmfadm -L [-h host]
/usr/cluster/bin/pmfadm -l nametag [-h host]
/usr/cluster/bin/pmfadm -m nametag [-n retries] [-t period]
/usr/cluster/bin/pmfadm -q nametag [-h host]
/usr/cluster/bin/pmfadm -s nametag [-w timeout] [signal]
pmfadm は、プロセスモニター機能に管理用のコマンド行インタフェースを提供するためのユーティリティーです。
プロセスモニター機能は、プロセスおよび派生プロセスのモニタリングを行い、途中で終了したプロセスに対しては再起動することができます。また発生する障害について、許容される総数および期間を指定することができます。指定期間内に発生した障害の総数が許容値を超過した場合、コンソールにメッセージが記録され、プロセスの再起動は行われなくなります。
action プログラムを指定しておくと、障害の発生数が許容値を超過した場合に、指定されたプログラムが呼び出されます。なお、action プログラムがゼロ以外のステータスで終了した場合は、プロセスの nametag がプロセスモニター機能から削除されます。それ以外の場合はプロセスが再起動され、オリジナルのパラメータが pmfadm に渡されます。
プロセスモニターの制御下で起動されるプロセスは、その要求を開始したユーザーの実効ユーザー ID (euid) および実効グループ ID (egid) として実行されます。これらのプロセスに関連付けられた nametag を操作できるのは、実行ユーザーまたは root のユーザーのみです。ただしステータス情報は、ローカルかリモートかを問わず、すべての呼び出し元から使用可能です。
最初に実行されたプロセスと、そこから生成されたプロセスおよび、その派生プロセスがすべてモニターされます。最後のプロセス/サブプロセスが終了した場合のみ、プロセスモニターはそのプロセスの再起動を試みます。
次のオプションがサポートされています。
プロセスが中断した場合に呼び出されるアクションプログラムです。該当するプログラムについては –a オプションに単独の引数として指定する必要がありますが、複数のコンポーネントを引用符で囲んだ文字列として指定することも可能です。いずれの場合も、文字列は指定通りに実行され、2 つの追加引数、発生したイベント (現状では failed のみ)、プロセスに関連付けられた nametag が付加されます。カレントディレクトリと PATH 環境変数は、コマンドが実行される前に再インスタンス化されます。その他の環境変数は、基本的に保持されるものとして処理されます。
アクションプログラムが 0 ステータスで終了した場合、pmfadm に渡されたオリジナルの引数を使用して、プロセスが再起動されます。その他のステータスで終了した場合は、プロセスモニターのモニター範囲内で nametag が終了します。
–a オプションが指定されていない場合は、0 ステータス以外で常に終了となるアクションスクリプトが指定されている場合と同様の結果になります。
プロセスを開始する際に、該当プロセスおよびその子孫を最大 level# レベルまでモニターします。なお level# に指定する値は、0 以上の整数にする必要があります。各プロセスの実行レベルについては、オリジナルのプロセスはレベル 0 で実行され、その子供はレベル 1 で実行され、孫に当たるプロセスはレベル 2 で実行されるというようになります。新しいフォーク操作により、新しい子のレベルが生成されます。
このオプションを使用することで、モニターするプロセスに対して、より細かなコントロールを施すことができます。これは、新規プロセスをフォークするサーバーをモニターする際に有用です。
このオプションを使用しない場合、すべての子プロセスがモニターの対象とされ、オリジナルおよびそのすべての子孫が実行を停止するまで、オリジナルのプロセスは再起動されないことになります。
サーバーがクライアントの要求を扱う際に新規プロセスをフォークさせる場合などは、このサーバーのみに限定してモニターできた方が都合がよい場合があります。これは、こうしたサーバーが活動を停止したような場合、そのクライアントプロセスが実行中であっても、サーバー本体を再起動する必要があるからです。適切なモニタリングレベルは –C 0 です。
子プロセスをフォークした場合、親プロセスは終了して、モニタリングすべき対象は子の側に移ります。子プロセスのモニターに用いるレベルは –C 1 です。双方のプロセスが終了した場合は、サーバーを再起動します。
nametag を識別子としてプロセスを開始させます。コマンド行フラグに続くすべての引数は、該当するプロセスとして処理されます。カレントディレクトリと PATH 環境変数は、コマンドが実行される前にプロセスモニター機能によって再インスタンス化されます。その他の環境変数は、基本的に保持されるものとして処理されます。
nametag がすでに存在する場合、pmfadm は終了ステータスを 1 として終了し、副次的な作用を及ぼすことはありません。
入出力先の変更は、コマンド行引数ではサポートされていません。こうした操作が必要な場合は、入出力先を変更するためのスクリプトを作成し、pmfadm の実行するコマンドに指定してください。
pmfadm 環境全体を新規プロセスへ渡します。デフォルトでは、このオプションは使用されず、rpc.pmfd 環境と pmfadm 環境のパスが渡されます。
–e と –E オプションは排他的な関係にあるため、同じコマンド内で両者を併用できません。
新しいプロセスの実行環境に渡される、ENV_VAR=env.value という形式の環境変数。このオプション指定は繰り返しが可能で、複数の環境変数を渡すことができます。デフォルトでは、このオプションは使用されず、rpc.pmfd 環境と pmfadm 環境のパスが渡されます。
アクセスするホスト名を指定します。デフォルトは localhost です。
指定されたシグナルを nametag に関連付けられたプロセスに送信するためのものです。アクションプログラムが現在実行中であれば、それに関連付けられたすべてのプロセスが該当します。特に指定されない場合は、デフォルトシグナルの SIGKILL が送信されます。プロセスおよびその子孫が終了した状況で再試行が可能であれば、プロセスモニターはプロセスを再起動させます。指定されるシグナルは、kill コマンドが認識する名前のセットと同じです。
該当コマンドを実行させたユーザーに属するすべての実行中のタグを一覧表示させるためのもので、root ユーザの場合は、サーバー上で実行中のすべてのタグが表示されます。
nametag に関するステータス情報を出力させます。このコマンドによる出力はシステムの診断をする際に有用ですが、内容は変更される可能性もあります。
nametag での再試行回数または再試行の監視時間を変更させるためのものです。なお、これらのパラメータを変更した場合、過去の障害発生に関する履歴はクリアされます。
指定期間内の再試行回数を指定します。このフィールドのデフォルト値は 0 であり、この場合いったん終了したプロセスは再起動されません。許容される最大値は 100 です。値 -1 は、再試行回数が無限大であることを示します。
nametag がプロセスモニターに登録されて実行されているかについて、その確認を行うためのものです。登録されていれば 0 が返され、そうでなければ 1 が返されます。その他の戻り値は、エラーを意味します。
nametag に関連付けられたコマンドの再起動を停止させます。シグナルが指定された場合、すべてのプロセスに送信されますが、これには現在実行中のアクションスクリプトおよびそのプロセスも該当します。シグナルが指定されない場合は、何も送信されません。ただし、プロセスのモニタリングを停止しても、そのままプロセス自体が消滅するわけではありません。プロセス本体およびそのすべての派生プロセスが終了するまで、該当するプロセスは実行され続けます。指定されるシグナルは、kill コマンドが認識する名前のセットと同じです。
障害発生をカウントし続ける時間を分単位で指定します。このフラグのデフォルト値は -1 で、この場合はカウント時間は無限大になります。このパラメータを指定すると、指定期間外でのプロセスへの障害発生はカウントされなくなります。
–snametag または –knametag フラグと組み合わせて使用された場合は、nametag に関連付けられたプロセスの終了を指定された秒数まで待機します。待機期限切れになった場合は、pmfadm が終了し、その終了ステータスは 2 となります。このフラグのデフォルト値は 0 であるため、いずれのプロセスの終了も待つことなく、コマンドはただちに戻り値を返します。
値として -1 を指定すると、タグに関連付けられたプロセスが終了するまで、pmfadm は無限に待機し続けます。pmfadm プロセスは、RPC タイムアウト期間に達するまで、使用している RPC サーバースレッドを解放しません。そのため、–w timeout 値を不必要に -1 に設定することは避けてください。
次の例は、sleep.once という名前の休眠プロセスを起動させるもので、これはいったん終了したあとは再起動することがありません。
example% pmfadm –csleep.once /bin/sleep 5使用例 2 休眠プロセスの起動とその再起動
次の例は休眠プロセスを起動させたあと、最大 1 回再起動させます。
example% pmfadm –csleep.twice -n 1 /bin/sleep 5使用例 3 休眠プロセスの起動とその再起動
次の例は休眠プロセスを起動させたあと、最大で毎分 2 回再起動させます。この実行の中断数が許容回数を超過すると、/bin/true が呼び出されます。
example% pmfadm –csleep.forever -n 2 -t 1 -a /bin/true /bin/sleep 60使用例 4 sleep.forever nametag の現在のステータスの一覧表示
次のコマンドは、sleep.forever nametag の現在のステータスを一覧表示します。
example% pmfadm –lsleep.forever使用例 5 すべてのプロセスへの SIGHUP の送信
次のコマンドは、sleep.forever に関連付けられたすべてのプロセスに SIGHUP を送信させるもので、すべてのプロセスが終了するまで最大で 5 秒間待機させます。
example% pmfadm –w5 –ksleep.forever HUP使用例 6 プロセスのモニタリングの停止および SIGHUP の送信
次のコマンドは、sleep.forever プロセスのモニタリング (および再起動) を停止させるもので、これに関連したすべてのプロセスに SIGHUP を送信させます。このコマンドはシグナルの送信後ただちに戻り値を返しますが、その時点ではすべてのプロセスが終了しきっていない可能性もあります。
example% pmfadm –ssleep.forever HUP使用例 7 該当ユーザーに属するすべての実行タグを一覧表示
ここでは、ユーザーが次の一連のコマンドを実行したものとします。
example% pmfadm –csleep.once /bin/sleep 30 example% pmfadm –csleep.twice /bin/sleep 60 example% pmfadm –csleep.forever /bin/sleep 90
これらの次に、次のコマンドを実行するものとします。
example% pmfadm –L
出力は次のようになります。
sleep.once sleep.twice sleep.forever
次の終了値が返されます。
正常終了。
nametag が存在しなかったか、既存の nametag を作成しようとした場合。
コマンドがタイムアウトした場合。
エラーが発生しました。
次の属性については、attributes(5) を参照してください。
|