initプロセスをrootで殺すことはできますか?

initプロセスをrootで殺すことはできますか?

initプロセス(pid 1を使用するプロセス)をrootで終了できますか?その結果は何ですか?

ベストアンサー1

基本的にいいえ。これは許可されません。 Linuxでは(man 2 kill):

プロセスID 1(つまり、initプロセス)に送信できる唯一の信号は、initに明示的なシグナルハンドラがインストールされているシグナルです。これは、システムが予期せずクラッシュしないようにするために行われます。

Pid 1(init)は自分が終了することを決定できます。この場合、「killing」は基本的に自分の終了を要求することです。これはこのコマンドを実装する1つの可能な方法ですが、これを実行する方法haltはわかりません。init

Macでlaunchdシグナル15(SIGTERM)(初期化アナログ)でシャットダウンすると、実行中のプログラムを完全にシャットダウンせずにシステムをすぐに再起動します。キャプチャできない信号9(SIGKILL)で終了すると、何も起こりません。これは、Macのkill()セマンティクスがこの点でLinuxのセマンティクスと同じであることを示しています。

現在、試してみたいというLinuxボックスはありません。したがって、initLinuxがSIGTERMを使用して実行することに関する質問は待つ必要があります。今日、UpstartやSystemdなどの代替プロジェクトがより普及しているので、init答えは変わるかもしれません。

修正する:Linux ではinitSIGTERM が明示的に無視されるため、何もしません。 @jsbillingsに情報がありますUpstartとSystemdがすること

おすすめ記事