Відповіді:
У нових системах 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 init, ви не вбиваєте initPID 1 (тому що у вас немає привілею), а ваш сеанс init, який був би PID 9526 у цьому прикладі.
Оскільки це initпроцес керування вашим сеансом графічного інтерфейсу, його вбивство вбиває вашу сесію, і тому ви вийшли з системи.
pkillзамість того, killallщо killallпрацює зовсім інше в інших системах, таких як Solaris ...
killallвбиває всіх. Звідси і назва.
killall initяк rootне здається гарною ідеєю - особливо в корисній системі - я думаю, що initвикликає паніку ядра, якщо він гине, тому що він не призначений ніколи досягти returnкінця mainциклу коду.