Linuxオペレーティングシステムを終了するには? [閉鎖]

Linuxオペレーティングシステムを終了するには? [閉鎖]

Gilles は、Linux カーネルがどのように終了するかについての優れた答えを次の場所に書きました。https://unix.stackexchange.com/a/122667/674

Linuxオペレーティングシステム(systemvinitとsystemdの場合)を終了する方法を知りたいです。 Linux OSと同様の起動順序を期待しています。具体的には、SIGTERMやSIGKILLなどの信号や他のプロセス間通信手段を介してプロセスがどのように通知されるのか疑問に思います。

ありがとうございます。

関連:

「オペレーティングシステムの終了時」と「カーネルの終了時」の違いは何ですか?

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

ベストアンサー1

systemdsysvinitとsystemdの場合、オペレーティングシステムをシャットダウンすると、まずinitシステムをシャットダウンする必要がある(または再起動または電源を切る必要がある)プロセス(pid 1のプロセス)に通知されます。

sysvinit/run/initctlこれは、FIFOを使用して通信し、init適切な実行レベルに切り替えるように要求することによって行われます。バラよりinitマンページ簡単な概要を教えてください。

systemdはこれを行うためのいくつかの方法をサポートしています。様々な種類シグナルさまざまな方法で終了、再起動などを要求するために使用できます。また、d-bus(busctlマンページこれを調べる方法を説明します)。

pid 1が終了するように要求されたら、その設定と仕様に従い、すべての適切な手順を実行します。これは通常、シャットダウンが発生していることをすべてのユーザーに通知し、実行中のすべてのサービスをシャットダウンし(systemdを使用して管理し、さまざまな形式のシャットダウンスクリプトを使用)、マウントされたsysvinitファイルシステムを同期し、アンマウントできます。 、残りのプロセスを終了する(通常の順序を使用)タスクが含まれます。 )、最後に適切なパラメータを使用してカーネルのシステムコールをTERM呼び出します。KILLreboot

これは一般的な順序を説明します。アクセス制御(Polkitを使用)、利用可能なさまざまなフック、kexec突然の停電処理、処理など、これらすべてにはより多くの紆余曲折があります。CtrlAltDelシステム文書では、これらの詳細を多く扱っています。

おすすめ記事