终止 /sbin/init 之后我会看到什么?

终止 /sbin/init 之后我会看到什么?

/sbin/init我杀死(PID:1)后会发生什么?

这样之后系统会崩溃吗?

答案1

PID 1(init)是通常的信号相关规则的例外。Linux 手册(man 2 kill)对此的说明如下:

唯一可以发送给进程 ID 1(即 init 进程)的信号是 init 明确安装了信号处理程序的信号。这样做是为了确保系统不会意外崩溃。

由于不可能为 SIGKILL 设置处理程序,因此 SIGKILL 永远不会传递给 PID 1。但是,发送信号的进程将获得 0 返回代码,表明一切正常。

事实上,如果允许杀死 PID 1,将会导致灾难,因为它是所有其他进程的祖先进程,并且没有地方可以重新将它们作为父进程。如果 PID 1 自己调用 exit(),Linux 内核将崩溃,即立即中止一切并打印堆栈跟踪,就像 Windows 上的蓝屏死机一样。您可以通过将 shell 设为 PID 1 来亲自尝试这一点:

在此处输入图片描述

参考

答案2

在 Ubuntu 20.04 上,它会导致屏幕立即冻结。老实说,我不确定是否有任何进程继续运行。

与其他答案相反,你顺便说一下,杀死 PID 1,只是不要使用kill或等效命令。如果您使用 gdb ( gdb -p 1) 绑定到它,则可以使用该kill命令杀死该进程。

相关内容