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

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

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

Watchdog がすべてのプロセスを停止するように要求してから強制的に停止するまでの一時停止時間はどのくらいですか? これは Watchdog 内でハードワイヤードされているのでしょうか、watchdog.conf で設定されているのでしょうか (そうであったとしても、マニュアル ページには記載されていません)、それとも別のシステム設定と同じでしょうか? この設定を変更するにはどうすればよいですか?

編集: タイムアウトは見つかりましたが、再構築してシステムと適切に統合する方法に関する手順をまだ探しています。

答え1

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

シグナルターミナル遅延 = 5

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

答え2

からウォッチドッグソース、shutdown.c445行目一時停止は Watchdog にハードワイヤードされており、5 秒です。

答え3

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() 関数の理由です。

関連情報