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
これにより、実行レベル 2345 で再生成されます。おそらく必要なのは 3 と 5 だけですが、これは問題なく動作し、Linux に組み込まれています。
ほとんどの Unix/Linux init
プログラムがデーモンを管理し、再起動します。サービスを /etc/inittab
に配置することを検討してください .または、 Upstart
を使用している可能性があります または systemd
.
これらのプログラムはすべて PID 1
として実行されます そして、システム プロセスを監視して再起動するのが彼らの仕事です。
Busybox タグから、組み込みシステムを実行していると思います。その上で、すべてのシェル スクリプトを使用した System V スタイルの init スクリプトは、非常にやり過ぎです。おそらくすべてを取り除いて、/etc/inittab
のエントリに置き換える必要があります。 または upstart または systemd ジョブ。
<ブロック引用>
Linux ソフトウェア ウォッチドッグは、プロセスを再起動するだけでなく、マシンを再起動します。
これは単に真実ではありません。ウォッチドッグがシステムのハングを通知した後、単一または複数のプロセスを再起動する可能性は非常に高いです。再起動を中止したり、ソフト再起動を実行したりできます。修復」 - あなたがやりたいことを何でもするスクリプト/バイナリ。ウォッチドッグのbusyboxバージョンは、ほぼ使用不可能なレベルまで削除されています.busybox開発者が主要な機能を放棄することに決めた理由を世界が知ることは決してないと思います-今のところ、busyboxをまったく避けるのが最善です-> 速度の改善はほとんどありません。サイズの縮小は、機能の大幅な損失を補うものではありません。 /bin/bash はかなり小さいです - サイズが重要で、準備ができている場合はフラグ "-Os" を付けてすべてを再コンパイルしてください - すぐに使えるウォッチドッグで、必要なほぼすべてのものを可能にします.
ああ、そして、独自のウォッチドッグを作成しないでください。おそらく、未処理のエラーが発生し、いつかあなたの人生を台無しにするでしょう.