Odpowiedzi:
W nowszych systemach Upstart proces inicjowania sesji rozpoczyna się po zalogowaniu za pomocą GUI. Ponieważ Ubuntu używa Upstart, istnieje initproces dla twojej sesji. Przetestuj za pstree -ps $$pomocą terminala:
$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)
└──zsh(7944)
Kiedy więc biegniesz killall init, nie zabijasz initPID 1 (ponieważ nie masz uprawnień), ale twoją sesję init, która w tym przykładzie byłaby PID 9526.
Ponieważ initjest to proces rządzący sesją GUI, zabicie go zabija sesję i dlatego jesteś wylogowany.
pkillzamiast, killallponieważ killalldziała zupełnie inaczej w innych systemach, takich jak Solaris ...
killallzabija wszystkich. Stąd nazwa.
killall initjak rootsię wydaje, nie jest dobrym pomysłem - szczególnie w przydatnym systemie - myślę, że initpowoduje panikę jądra, jeśli umrze, ponieważ nie jest przeznaczone do osiągnięcia returnkońca mainpętli kodu.