在最近的“为什么‘kill -9 0’结束我的控制台会话”和“如何引起内核恐慌”问题之间,我在鞍座下放了一把车针,并kill -9 1
在一台最新的 Arch Linux 笔记本电脑上进行了尝试。我以用户 ID“root”的身份执行此操作。
我完全预料到会发生某种崩溃、恐慌或关机,但什么也没发生。我kill -9 1
又做了一次,没有效果。
Arch linux 机器systemd
现在都在运行,那么:如何在systemd
kill -9 中幸存下来?我预计 Linux 3.7 内核中有特殊情况的代码,但也许还存在一些我没有想到的其他原因。
那么其他以 PID 1 运行的东西呢?我相信Slackware 仍在使用init
,但我不敢在我的生产 Slackware 服务器上尝试它。我的无线路由器上的 DD-WRT 运行某种 /sbin/init 。
答案1
从man 2 kill
:
唯一可以发送到进程 ID 1(即 init 进程)的信号是 init 已显式安装信号处理程序的信号。这样做是为了确保系统不会意外崩溃。
也就是说,在接收(包括退出)时可以init
做任何它喜欢的事情SIGKILL
,但 systemd 的 init 不会为其安装任何信号处理程序,因此什么也不会发生。