EN JA
WATCHDOGD(8)
WATCHDOGD(8) FreeBSD System Manager's Manual WATCHDOGD(8)

名称

watchdogdウォッチドッグデーモン

書式

watchdogd [ -dnSw][ --debug][ --softtimeout][ --softtimeout-action action][ --pretimeout timeout][ --pretimeout-action action][ -e cmd][ -I file][ -s sleep][ -t timeout][ -T script_timeout]

解説

watchdogd ユーティリティは、システムが動作状態にあることを保証するためにカーネルのウォッチドッグ機能とインタフェースをとります。 watchdogd が特定のタイムアウト上でカーネルとのインタフェースをとることができないなら、カーネルは、コンピュータをデバッグするか、再スタートすることを助けるための処置を取ります。

-e cmd が指定されるなら、 watchdogd は、 system(3) でこのコマンドを実行することを試み、コマンドが 0 終了コードで返る場合のみウォッチドッグは、リセットされます。 -e cmd が指定されないなら、デーモンは、代わりに通常のファイルシステムチェックを実行します。

-n 引数 'dry-run' によって、ウォッチドッグは、システムウォッチドッグを作動可能にせず、代わりに、ウォッチドッグ機能のみを実行し、失敗時に報告します。これは、スクリプトに問題があるなら、システムがリブートしないように、新しい watchdogd スクリプトを開発するために役に立ちます。

-s sleep 引数は、チェックの各実行の間でスリープ期間を制御するために使用することができます、デフォルトは、1 秒です。

-t timeout は、秒単位で必要なタイムアウトの期間を指定します。デフォルトのタイムアウトは、16 秒です。

ウォッチドッグタイムアウトを引き起こす 1 つのあり得る状況は、割り込みストーリムです。これが起こるなら、 watchdogd は、もはや実行しないで、その結果カーネルのウォッチドッグルーチンは、設定可能なタイムアウトの後で処置します。

-T script_timeout は、watchdogd が、そのスクリプトがあまりにも長い間実行したとエラーを出す、しきい値を (秒単位で) 指定します。設定されていないなら、 script_timeout は、 -s sleep オプションによって指定された値をデフォルトとします。

SIGTERM または SIGINT シグナルを受信すると、 watchdogd は、最初にもはやウォッチドッグチェックを実行しないようにカーネルに指示し、そして、終了します。

watchdogd ユーティリティは、次の実行時オプションを認識します:

-I file
指定されたファイルに watchdogd ユーティリティのプロセス ID を書き込みます。
-d --debug
フォーク (fork) しません。このオプションが指定されるとき、 watchdogd は、始動時に、バックグラウンドにフォークしません。
-S
ウォッチドッグコマンドが実行するために予想されたより長くかかるなら、システムのログ記録プログラム (logger) にメッセージを送りません。デフォルトの振る舞いは、LOG_DAEMON 機能があるシステムのログ記録プログラム (logger) を通して警告をログ記録し、標準エラーに警告を出力することです。
-w
ウォッチドッグのスクリプトがあまりにも長くかかるとき、エラーを出します。このフラグによって watchdogd は、ウォッチドッグのスクリプトを実行する時間が 'sleep' オプションのしきい値を越えるとき、エラーを出します。
--pretimeout timeout
"pretimeout"ウォッチドッグを設定します。ウォッチドッグがアクションの開始を試みる前の "タイムアウト"秒。アクションは、--pretimeout-action フラグによって設定されます。デフォルトは、 log(9) によってメッセージ (WD_SOFT_LOG) を単にログ記録することです。
--pretimeout-action action
pretimeout のためのタイムアウトアクションを設定します。セクション 「タイムアウトアクション」 を参照してください。
--softtimeout
様々なハードウェアのウォッチドッグを作動可能にする代わりに、基本ソフトウェアウォッチドッグだけを使用します。デフォルトのアクションは、メッセージ (WD_SOFT_LOG) を単に log(9) (ログ記録) することです。
--softtimeout-action action
softtimeout のためにタイムアウトアクションを設定します。セクション 「タイムアウトアクション」 を参照してください。

タイムアウトアクション

次のタイムアウトアクションは、 --pretimeout-action--softtimeout-action フラグによって利用可能です:
panic
タイムアウトに到達するとき、 panic(9) を呼び出します。
ddb
タイムアウトに到達するとき、 kdb_enter(9) によってカーネルデバッガに入ります。
log
タイムアウトに到達するとき、 log(9) を使用してメッセージをログ記録します。
printf
コンソールと dmesg(8) バッファへのメッセージを表示するためにカーネル printf(9) を呼び出します。

次のようにコンマで区切られたリストでアクションを組み合わせることができます: log,printf は、 printf(9)log(9) の両方を実行し、 log(9) は、 dmesg(8)syslog(8) のためのカーネル log(4) デバイスの両方にメッセージを送ります。

関連ファイル

/var/run/watchdogd.pid

使用例

watchdogd および利用者のウォッチドッグスクリプトのデバッグ

これは、 watchdogd と利用者のウォッチドッグスクリプトをデバッグするための役に立つ方策です。

( watchdogd は、 system(3) を呼び出し、それで、最初の ^C が "sleep"コマンドを終了するので、^C は、奇数で動作することに注意してください。)

オプションの説明は、次を使用します:

  1. デバッグをオンに設定します (--debug)
  2. ウォッチドッグを 30 秒で外すように設定します。
  3. softtimeout の使用:
    1. (ハードウェアウォッチドッグを装備しない) softtimeout を使用します。 (--softtimeout)
    2. softtimeout アクションを、それが外れるとき、両方のカーネル printf(9)log(9) を行なうように設定します。 (--softtimeout-action log,printf)
  4. 事前タイムアウトの使用:
    1. 15 秒の事前タイムアウトを設定します (これは、後でパニック/ダンプを引き起こします)。 (--pretimeout 15)
    2. また、アクションを、それが外れるとき、カーネル printf(9)log(9) に設定します。 (--pretimeout-action log,printf)
  5. スクリプトの使用:
    1. ウォッチドッグ (-e 'sleep 60') として動作するシェルコマンドとして "sleep 60"を実行します
    2. スクリプトが実行するために (-w) 1 秒より長くかかるとき、警告します

watchdogd --debug -t 30 \ 
  --softtimeout --softtimeout-action log,printf \ 
  --pretimeout 15 --pretimeout-action log,printf \ 
  -e 'sleep 60' -w

使用例の生産的使用

  1. ハードのタイムアウトを 120 秒 (-t 120) に設定します
  2. (ダンプ解析のために crash(8) を引き起こすために) 60 秒でパニックを起こるように設定します:
    1. 事前タイムアウトの使用 (--pretimeout 60)
    2. 事前タイムアウトのアクションを指定します (--pretimeout-action log,printf,panic )
  3. スクリプトの使用:
    1. 利用者のスクリプトを実行する (-e '/path/to/your/script 60')
    2. 利用者のスクリプトが実行時に 15 秒より長くかかるならログを記録します。 (-w -T 15)

watchdogd  -t 120 \ 
  --pretimeout 60 --pretimeout-action log,printf,panic \ 
  -e '/path/to/your/script 60' -w -T 15

歴史

watchdogd ユーティリティは、 FreeBSD 5.1 で登場しました。

作者

watchdogd ユーティリティとマニュアルページは、 Sean Kelly <smkelly@FreeBSD.org>と Poul-Henning Kamp <phk@FreeBSD.org>によって書かれました。

いくつかの貢献が Jeff Roberson <jeff@FreeBSD.org>によって行われました。

pretimeout と softtimeout アクションシステムは、 Alfred Perlstein <alfred@freebsd.org>によって追加されました。

July 27, 2013 FreeBSD