Respostas:
Nos sistemas Upstart mais novos, um processo de inicialização da sessão é iniciado quando você faz login usando a GUI. Como o Ubuntu usa o Upstart, há um init
processo para sua sessão. Teste usando pstree -ps $$
um terminal:
$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)
└──zsh(7944)
Portanto, quando você executa killall init
, não está matando o init
PID 1 (porque você não tem o privilégio), mas a sua sessão init
, que seria o PID 9526 neste exemplo.
Como esse init
é o processo de governança da sua sessão da GUI, matá-lo mata a sua sessão e, portanto, você é desconectado.
pkill
em vez de killall
porque killall
obras completamente diferentes em outros sistemas, como Solaris ...
killall
mata tudo. Daí o nome.
killall init
como root
não parece uma boa idéia - especialmente em um sistema útil - acho que init
causa pânico no kernel se ele morrer, porque não se destina a atingir um return
no final de seu main
loop de código.