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