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