ユーザーがログアウトするときに「killall init」を実行するのはなぜですか?


12

Ubuntu 14.XXを実行している複数のコンピューターで、ユーザーとして「killall init」コマンドを実行すると、すぐにログアウトされました。問題なく再度ログインできました。どうしてこれなの?舞台裏で何が起こっているのですか?

回答:


21

新しいUpstartシステムでは、GUIを使用してログインすると、セッション初期化プロセスが開始されます。UbuntuはUpstartを使用initするため、セッションのプロセスがあります。pstree -ps $$ターミナルで使用してテストします:

$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)                                                                                                                                                                                  
                                                                             └──zsh(7944)

したがって、を実行するとkillall initinitPID 1をinit強制終了することはできません(特権がないため)が、セッションはこの例ではPID 9526になります。

これinitはGUIセッションの管理プロセスであるため、これを終了するとセッションが終了し、ログアウトされます。


killallは常にプロセスツリーの最も近い親族に信号を送信しますか?rootとしてコマンドを実行した場合(たとえばsudoを使用)、同じ結果が得られますか、それともカーネルパニックになりますか?
ティムセグイン

1
@TimSeguine名前が示すように、この名前を持つすべてのプロセスに送信されます。pkillkillallkillall
ちなみに

killallすべてを殺します。したがって、名前。
オリオン

1
@TimSeguineすべてに送信しますが、あなたが普通のユーザーである場合、他のユーザーのプロセスにシグナルを送信することはできません。そのため、独自のプロセスツリーの1つにのみ影響します。
バーマー

killall initas asを実行するのrootは良い考えではないようです-特に有用なシステムでは- コードループの最後にinit到達することを意図していないため、死ぬとカーネルパニックを引き起こすと思います。returnmain
SlySven
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.