Answers:
在较新的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
,您并没有杀死init
PID 1(因为您没有特权),而是杀死了session init
,在本例中为PID 9526。
因为这init
是GUI会话的管理过程,所以杀死它会杀死您的会话,因此您将注销。
pkill
而不是killall
因为killall
在Solaris等其他系统上的工作方式完全不同...
killall
杀死所有人。由此得名。
killall init
的root
似乎不是一个好主意-尤其是在有用的系统-我认为init
会导致内核错误,如果它死了,因为它不打算永远到达return
它的结束main
代码回路。