オペレーティングシステムがシャットダウンしたら、サービス管理者はSIGTERMとSIGKILLをそのサービスに送信する必要があることをどのように知ることができますか?

オペレーティングシステムがシャットダウンしたら、サービス管理者はSIGTERMとSIGKILLをそのサービスに送信する必要があることをどのように知ることができますか?

読むStephenの素晴らしい答えの1つ

いつ。 。 。いつオペレーティングシステムSIGTERMプロセスを閉じて使用して終了しますSIGKILLが、これらのシグナルはカーネルからは出ません(または呼び出しから直接は出ません)。kill()pidが0または負のpidの場合、カーネルは複数のプロセスにシグナルを送信します。彼らは-から来たサービス管理者がサービスを終了します。そしてからシステム管理メカニズムの一部であるさまざまな最後の手段ですべてを殺すアプリケーションモードプログラム:例えばkillprocsVan Smulenbergのrc脚本、これkillprocsOpenRCスクリプト、しかもsystemd-shutdownプログラム

オペレーティングシステムが終了すると、

  • サービス管理者はサービスを終了する必要があることをどのように知ることができますか?サービス管理者は、カーネルまたは一部のプロセスからSIGKILL、SIGTERM、またはその他の信号を受信して​​通知しますか?

  • 同様に、システム管理メカニズムの一部であるさまざまな最後の手段ですべてを殺すアプリケーションモードプログラムがSIGTERMとSIGKILLを発行する必要があることをどうやって知ることができますか?

ありがとうございます。

ベストアンサー1

サービス管理者は、システム管理者がシステムの停止または再起動を要求したため、サービスを終了する必要があることを知っています。管理者が実行するか、rebootユーザーがデスクトップ環境で適切なオプションを選択すると、プロセスがinit再起動するように求められます(現在のカーネルではありません)。プロセスは、カーネルに実際に再起動を要求する前にinit実行するように構成されたすべての操作を処理します。

最後の手段であるすべてを終了するステップは、終了プロセスの一部です。シャットダウンプロセスで実行されているすべてのサービスを停止する必要がある場合は、通常しばらく待ってから、残りのプロセスをすべて終了します。

初期化システムごとにその実装が異なります。を使用すると、sysvinit停止または再開は、最初に実行をinit適切なランレベルに切り替える必要があるランレベル遷移です(参照:telinitマンページ詳細はこちら)。 systemdの場合、最終的に実行されるターゲットです。systemd-haltサービス

おすすめ記事