Odpowiedzi:
W nowszych systemach Upstart proces inicjowania sesji rozpoczyna się po zalogowaniu za pomocą GUI. Ponieważ Ubuntu używa Upstart, istnieje init
proces 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 init
PID 1 (ponieważ nie masz uprawnień), ale twoją sesję init
, która w tym przykładzie byłaby PID 9526.
Ponieważ init
jest to proces rządzący sesją GUI, zabicie go zabija sesję i dlatego jesteś wylogowany.
pkill
zamiast, killall
ponieważ killall
działa zupełnie inaczej w innych systemach, takich jak Solaris ...
killall
zabija wszystkich. Stąd nazwa.
killall init
jak root
się wydaje, nie jest dobrym pomysłem - szczególnie w przydatnym systemie - myślę, że init
powoduje panikę jądra, jeśli umrze, ponieważ nie jest przeznaczone do osiągnięcia return
końca main
pętli kodu.