systemdはkill -9をどのように生き残りますか?


28

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

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

Arch Linuxマシンはsystemd最近実行されているのでsystemd、kill -9をどのように乗り切るのでしょうか?Linux 3.7カーネルには特殊なケースコードがあると思いますが、おそらく考えていない別の理由が存在する可能性があります。

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

回答:


33

からman 2 kill

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

つまり、init受信時にSIGKILL(終了を含む)好きなことを行うことができますが、systemdのinitはシグナルハンドラをインストールしないため、何も起こりません。


4
それに注意してくれてありがとう。これはLinux固有ですか?90年代初期に誤ってinitを強制終了してSunOSワークステーションをクラッシュさせたことを覚えているようです。か否か。私は若い頃はもっと無謀でした。
ブルースエディガー

1
@BruceEdiger、私もkill -9 initカーネルパニックを起こして誘発したことを覚えているようです。ある時点で変化したように聞こえます。
-psusi

2
@BruceEdiger-AIXサーバーとHP-UXサーバーで試しました。両方がエラーメッセージを返しました:kill:1:0403-068シグナルはこのプロセスには無効です。kill:1:指定されたプロセスは存在しません。マニュアルページには、これがエラーを返すと特に言及されていました。私はこれを以前に行うことができると多くの人々に言われました-しかし、誰も過去10年以上で成功していません。
DarkHeart

2
@BruceEdigerこれは最近の(少なくともUnixの寿命に関して)開発であるように思われます。残念ながら、私は90年代前半には生きていなかったのでそれが起こったは私の知識の範囲外です。しかし、ほとんどすべての現代のUnicesがこの動作をデフォルトに変更しているように見えるため、調べるのは興味深いでしょう。
クリスダウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.