1

Linuxデーモンプロセスをcで記述しましたが、問題は、ユーザーがデーモンを強制終了した場合、デーモンを自動的に再起動する必要があるということです。デーモン内に実装するにはどうすればよいですか。

のように::受信したシャットダウンイベントで>デーモンを再起動します

シナリオ例

デーモンは長寿命です。多くの場合、デーモンはシステムの起動時に作成され、システムがシャットダウンされるまで実行されます。たとえば、XXXと呼ばれるデーモンは、特定のログファイルを監視する機能などの重要なルーチンを実行し、見つかった場合は、高セキュリティアプリで管理者に警告します。 、このデーモンが強制終了された場合は、自動的に再起動する必要があります

4

3 に答える 3

1

ユーザーがkillpidでデーモンをシャットダウンするために使用している場合、デーモンを再起動するためにデーモンの内部から多くのことを行うことはできません。(ほとんどのユーザーは、常に使用する必要がある場所を読んでいるためkill -9、ほとんどすべての場合、これは非常に悪い考えですが、それでも使用します)

kill -9ユーザーが使用していない(そして使用できない) ことを保証できる場合は、デーモンを正常に終了して再起動するようにシグナル ハンドラーをセットアップできます。

それ以外の場合、最善の策は、別のプロセスに、デーモンが停止または強制終了されたときにデーモンを再起動させることです。daemontoolsを確認するか、単純なシェル スクリプトを使用します。

while true; do
    daemon
    sleep 1
done
于 2012-11-02T17:50:06.520 に答える
1

これは間違った質問です。再起動によるウォッチドッグ(これはあなたが求めているものです)は、フォールトトレランス技術です。フォールト トレランスを使用して、ヒューマン マシン オペレーターの意図的および意図的な決定を修正することはありません。ユーザーにプロセスを強制終了させたくない場合は、強制終了しないように伝えてください。彼らがそれを無視した場合、彼らはシステムを壊しています。通常、標準のシステム デーモンはリスポーンしません。

于 2012-11-02T18:12:35.597 に答える
0

cron がデーモンの活動を確認するための良い/安全なアイデアであるかどうかを考えていました。

例えば:

30 分ごとにスクリプトを起動して、デーモンがアクティブかどうかをテストします。

$ */30 * * * * <script to verify daemon activity>

スクリプト (疑似コード):

if daemon is active
then
    :
else
    restart daemon
fi
于 2012-11-03T18:41:13.510 に答える