我有一个无法杀死的进程kill -9 <pid>。在这种情况下有什么问题,特别是因为我是该流程的所有者。我认为没有什么可以逃避这个kill选择。
我让 Firefox 在 Parted Magic LiveCD 上运行,然后(可能)由于我不记得的组合键,它很快从屏幕和任务栏/窗口列表中消失了。
然而:
ps ax | grep firefox返回下面的(和不需要的grep firefox行)。两者ps和 GUI 任务管理器都显示 firefox 看似不变的 RSS、VM-SIZE 和 0% CPU 使用率。
约翰多 1916 36.6 14.0 923772 504372 tty1 Sl 13:30 12:15 firefox
pstree | grep firefox 返回:
init???2*[ROX-Filer???firefox???25*[{firefox}]]
strace -p 1916 返回,并且似乎永远停留在这条线上:
futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL
我从ps 中的 STAT 列值是什么意思的答案中了解到?that S(in Sl) 表示进程处于某种interruptible sleep状态。
任何人都可以更详细地说明状态是什么?
编辑
我将开始一个新问题,在我的发行版上有更多细节,以解决最初的第二个问题。
发布这个问题是因为我很惊讶没有直接回答它;如果这是重复的,请道歉 - 我确实看过!
我听说过kill -9或者kill -SIGKILL不好,但我不明白为什么。如果我不应该kill -9有什么要我做杀死一个进程?
阅读吉尔斯的回答,
SIGHUP 在严厉程度方面与 SIGTERM 大致相同,但它具有特定的作用,因为当用户与终端断开连接时,它会自动发送到终端中运行的应用程序(从词源上讲,因为用户是通过电话线和调制解调器连接的)挂了)。SIGHUP 通常是非自愿的,与必须显式发送的 SIGTERM不同,因此应用程序应尝试在 SIGHUP 上保存其状态。
“必须显式发送的 SIGTERM”中的“显式”是否意味着 SIGTERM 必须最初由进程(而不是内核)通过进程调用发送kill()?
我想知道 SIGKILL 是否必须显式发送到指定的进程?内核可以隐式向进程发送 SIGKILL 和 SIGTERM 中的任何一个吗?
当操作系统关闭时,内核是否会向正在运行的进程发送一些信号来终止它们?它是什么信号?内核是否隐式发送它?
谢谢。