こんにちは、Linuxのソフトウェアウォッチドッグの処理方法を教えていただけますか。継続的に実行されるプログラム "SampleApplication"があり、ハングまたは予期せず終了した場合に再起動する必要があります。
私はこれについてグーグルで見て、Linuxには/ dev/watchdogにウォッチドッグがありますが、それを使用する方法がわかりません。誰かが私を助けてくれますか?.
私の質問は、アプリケーション名と再起動の遅延間隔を指定する場所です。私はLinuxが初めてなので、可能であればサンプルで簡単に説明してください。ありがとう
ほとんどのUnix/Linux init
プログラムは、デーモンを管理して再起動します。サービスを/etc/inittab
に配置することを検討してください。または、Upstart
またはsystemd
を使用している可能性があります。
これらのプログラムはすべてPID 1
として実行され、システムプロセスを監視および再起動するのが彼らの仕事です。
Busyboxタグから、組み込みシステムを実行していると思います。これらについては、System Vスタイルのinitスクリプトとそのすべてのシェルスクリプトは本当にやり過ぎです。おそらくそれらすべてをリッピングして、/etc/inittab
またはupstartまたはsystemdジョブのエントリに置き換える必要があります。
モデレーターは改善後を無視するため、個別に投稿する必要があります
Linuxソフトウェアウォッチドッグは、プロセスを再起動するだけでなく、マシンを再起動します。
これは単に真実ではありません。ウォッチドッグがシステムがハングしていることを通知した後、単一または複数のプロセスを再起動することは非常に可能です-リブートを中止するか、ソフトリブートを実行することもできます。「テスト」と「あなたがやりたいことを何でもするスクリプト」/バイナリを修復します。 watchdogのbusybox-versionはほぼ使用できないレベルにまで削減されています... busybox-devsが主要な機能を放棄することを決めた理由は、世界では決してわからないでしょう-今のところ、busyboxを避けることをお勧めします- >速度の改善はほとんど存在せず、サイズを小さくしても機能の大幅な損失は補償されません。/bin/bashはかなり小さいです-サイズが重要で、あなたが行くのが良い場合は、フラグ「-Os」ですべてを再コンパイルします-すぐに使えるウォッチドッグで、ほぼすべてのことができます。
ああ、あなた自身のウォッチドッグを作成しないでください-それはほとんどの場合、未処理のエラーを残し、あなたの人生を悪くするでしょう。
Cronを使用してはどうですか?毎分実行される小さなcronジョブをセットアップします。アプリケーションが(psを使用して)起動しているかどうかを確認し、起動していない場合は再起動します。
このような小さなスクリプトを作成します。
#!/bin/bash
if [ ! "$(pidof myapp)" ]
then
/path/to/myapp &
fi
「myapp」がプロセスリストにあるかどうかをテストします。 「!」テストを逆にします。存在しない場合は、「myapp」を実行します。 「&」は、バックグラウンドで始まるようになっています。
これをcronに追加します。システムと設定に応じて、いくつかの方法があります。古典的な方法はcrontabを使用することです。 crontab行を指定する方法に関するドキュメントはたくさんありますが、おそらく次のようなものが必要です。
* * * * * /path/to/the/script.sh > /dev/null
これにより、毎時毎にテストが実行されます...アイデアが得られます。
使用する /etc/inittab
特定の実行レベルで起動するためにそれを利用することができ、それが強制終了された場合、自動的に再起動されます。
n:2345:respawn:/path/to/app
これにより、おそらく3と5だけが必要な実行レベル2345でリスポーンされますが、これは正常に機能し、Linuxに組み込まれています。
ウォッチドッグのドキュメントはこちら: http://linux.die.net/man/8/watchdog
しかし、これはあなたが望むものではないようです。 Linuxソフトウェアウォッチドッグは、プロセスを再起動するだけでなく、マシンを再起動します。
独自のウォッチドッグを簡単に作成できます。たとえば、プログラムで一時ファイルを定期的に作成し、ファイルを時々チェックし、しばらく更新されていない場合はプロセスを再起動するスクリプトを起動できます。
Systemdを使用している場合、2つのウォッチドッグがあります。1つはハードウェア用(systemd.confまたはwatchdogデーモンを使用)、もう1つはサービスとして初期化されたデーモン用です。 systemdがオプションの場合は、次を参照してください。 http://0pointer.de/blog/projects/watchdog.html
「Monit」ユーティリティを使用して、サービスを再起動および監視できます。コマンド「 "apt-get install monit"」を発行するだけでインストールできます。
C++で記述され、Kahless_9フレームワークに対してリンクするユーティリティであるwdogを試すことができます。このソースコードは、次の場所からダウンロードできます。 https://github.com/zepher999/wdog そして、必要に応じて更新されます。将来のために必要なTODOリストの変更がまだいくつかありますが、これは現在の要件を満たす必要があります。
このユーティリティでは、引数として監視されるすべてのプロセスが含まれる入力としてcsvファイルが必要です。ユーティリティは、起動時に、csvファイルで指定されたこれらのプロセスをすべて開始し、終了/終了を監視してプロセスを再起動します。
現在、wdogでは、監視対象プロセスの停止/強制終了、およびユーティリティをホットモードまたはコールドモードで起動することができます。ホットモードでは、ユーティリティはキャッシュされたレコードを使用して、すでに開始されているプロセスを監視できますが、コールドモードでは、キャッシュされた値を破棄し、すべてのプロセスを開始しようとします。
このユーティリティには、それ自体のインスタンスを起動してそれ自体を監視する機能もあり、それによりウォッチドッグ用のウォッチドッグがあります。
オペレーティングシステムのウォッチドッグ(OPが直接望んでいたものではない)を探している人がこのページに到着した場合、これが必要です。
Sudo apt-get install watchdog
service watchdog status
service watchdog start
動作していることを確認するには、次を実行します。
tail -f /var/log/syslog | grep watchdog
次のように表示されるはずです。
Jul 25 22:03:35 nuc watchdog[14229]: still alive after 733 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 734 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 735 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 736 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 737 interval(s)
質問に正しく答えることを願っています。他のすべての答えは非常に異なっているようです。