web-dev-qa-db-ja.com

systemdはどのように-9で生き残ったのですか?

最近の「なぜ「kill -9 0」でコンソールセッションが終了するのですか」と「カーネルパニックを取得する方法」の質問の間に、サドルの下にバーがあり、試しましたkill -9 1ほとんどが最新のArch Linuxラップトップ。ユーザーID「root」としてやった。

なんらかのクラッシュ、パニック、またはシャットダウンを完全に予期していましたが、何も起こりませんでした。やった kill -9 1再び、効果はありません。

Arch Linuxマシンは最近systemdを実行するので、systemdはどのようにして-9で生き残ることができますか? Linux 3.7カーネルには特別なケースのコードがあると思いますが、おそらく私が考えていなかったいくつかの他の理由が存在します。

PID 1で実行される他のものについてはどうですか? Slackwareは今でもinitを使用していますが、実際のSlackwareサーバーで試してみるのは怖いです。ワイヤレスルーターのDD-WRTは、ある種の/ sbin/initを実行します。

30
Bruce Ediger

man 2 killから:

プロセスID 1、initプロセスに送信できるシグナルは、initがシグナルハンドラーを明示的にインストールしたシグナルだけです。これは、システムが誤って停止しないようにするためです。

つまり、initSIGKILLを受け取ったときに(終了を含む)好きなことをすることは可能ですが、systemdのinitはそのためのシグナルハンドラーをインストールしないため、何も起こりません。

35
Chris Down