【发布时间】:2014-01-09 21:28:10
【问题描述】:
关于将信号 9 (SIGKILL) 发送到初始化进程 (PID 1),我遇到了一个奇怪的问题。 您可能知道,不能通过信号处理程序忽略 SIGKILL。当我尝试向 init 发送 SIGKILL 时,我注意到什么也没发生; init 不会被终止。为了弄清楚这种行为,我决定用 strace 将自己附加到 init 进程中,以便更清楚地看到发生了什么。现在是奇怪的部分。如果我用 strace “查看” init 进程并向其发送 SIGKILL,系统就会崩溃。
我的问题是为什么会这样?为什么我查看进程时系统会崩溃,而我不查看时为什么系统不会崩溃?正如我所说,在这两种情况下,我都会向 init 发送 SIGKILL。在 CentOS 6.5、Debian 7 和 Arch 上测试。
谢谢!
【问题讨论】:
-
没有
init,我认为您的操作系统无法正常运行。如果你想杀死init,你也可以shutdown/halt/poweroff。 -
是的,你是对的,但我的“实验”纯粹是出于好奇。
-
你说得对,这很有趣。
标签: unix signals init pid sigkill