web-dev-qa-db-ja.com

Watchdogがすべてのプロセスを停止するまで待機する時間を確認するにはどうすればよいですか?

Watchdogによって監視されているサーバーがありますが、ネットワークハードウェアの故障により時々リブートすることがありますが、現時点では交換できません。私が読んだように、WatchdogはすべてのプロセスにSIGTERMを送信して安全なシャットダウンを要求し、しばらくするとSIGKILLを送信します。SIGKILLはプロセスをすぐに停止します。ただし、この場合、重要なメインプロセスはまだ完全にシャットダウンされておらず、データが書き込まれていないため、データが破損します。

この一時停止は、Watchdogがすべてのプロセスの停止を要求してから強制的に停止するまでにどのくらいかかりますか? Watchdog内に組み込まれているか、watchdog.confに設定されていますか(設定されている場合は、マンページに文書化されません)、または別のシステム設定と同じですか?この設定を変更するにはどうすればよいですか?

編集:タイムアウトを見つけましたが、システムを正しく再構築して統合する方法についての指示をまだ探しています。

3
hexafraction

Sourceforgeの公式5.15バージョンには、このオプションが含まれています。次の行を使用して、ファイルwatchdog.confで構成できます。

sigterm-delay = 5

(サンプルファイルにコメントアウト)。 5.15には実質的にすべての機能といくつかのバグ修正が含まれているため、実験的な「V6」バージョンは使用しないでください。また、「土」のWebサイトは、NERCの資金が撤回されたため、2019年後半に閉鎖される可能性があることに注意してください。

1
Paul Crawford

Linuxウォッチドッグデーモンの構築、構成、およびテストに関する情報をここに投稿しました。

http://www.sat.dundee.ac.uk/~psc/watchdog/Linux-Watchdog.html

簡単な答えは、このプロジェクト用にビルドするようにシステムを構成する必要があるということです。

Sudo apt-get build-dep watchdog
Sudo apt-get install build-essential automake libtool

次に、おそらく既に持っているソースコードを取得しますが、最新の手順は次の手順で実行できます。

Sudo apt-get install git
git clone git://git.code.sf.net/p/watchdog/code watchdog-code

コードディレクトリに移動し、コンパイルの準備をします。

cd watchdog-code
autoreconf -i
./configure

次に、ソースディレクトリに移動してコンパイルします。

cd src
make clean
make

現在のディレクトリに新しいバイナリがあります。 Sudo make installを使用して「ライブ」にする前にテストするか、少なくともシステムが提供するプログラムのバックアップコピーを作成します。デバッグシンボルが原因で、システムと比較して肥大化しています。サイズを縮小する場合は、stripコマンドを使用できます。

SIGTERMが機能するために必要な時間はどれくらいですか?

追加するために編集:

現在のGITプルを使用している場合(2013年9月14日)、shutdown.cを編集し、363行目で「safe_sleep(4);」を変更します。希望するタイムアウト値を秒単位で設定します。システム提供のウォッチドッグ(上記参照)のコードを編集する場合は、システムが単純に再起動するため、ハードウェアタイムアウト(通常は60秒)を超えてsleep()しないように注意してください!これがsafe_sleep()関数の理由であり、待機中にウォッチドッグに給電し続けます。

1
Paul Crawford

Watchdogソース、shutdown.c、行445 、一時停止はWatchdogに組み込まれており、5秒です。

1
hexafraction