systemd 如何在kill -9 后幸存下来?

systemd 如何在kill -9 后幸存下来?

在最近的“为什么‘kill -9 0’结束我的控制台会话”和“如何引起内核恐慌”问题之间,我在鞍座下放了一把车针,并kill -9 1在一台最新的 Arch Linux 笔记本电脑上进行了尝试。我以用户 ID“root”的身份执行此操作。

我完全预料到会发生某种崩溃、恐慌或关机,但什么也没发生。我kill -9 1又做了一次,没有效果。

Arch linux 机器systemd现在都在运行,那么:如何在systemdkill -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 不会为其安装任何信号处理程序,因此什么也不会发生。

相关内容