首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于Linux上的进程,kill -9怎么可能没有影响呢?

对于Linux上的进程,kill -9怎么可能没有影响呢?
EN

Stack Overflow用户
提问于 2009-03-29 14:39:22
回答 7查看 63.5K关注 0票数 65

我正在写一个插件,当你访问网站时,它会自动突出显示文本字符串。它类似于突出显示的搜索结果,但它是自动的,可以用于许多单词;它可以用于有过敏症的人,例如,当他们浏览食物网站时,使单词真正突出。

但我有个问题。当我试图关闭一个空的、新鲜的FF窗口时,它以某种方式阻塞了整个过程。当我杀死这个进程时,所有的窗口都消失了,但是Firefox进程仍然活着(父进程的PID是1,不监听任何信号,有大量的资源打开,仍然占用CPU,但不会改变)。

所以有两个问题:

  1. 进程怎么可能不监听kill -9 (既不是以用户身份,也不是以根用户身份)?
  2. 除了重新启动之外,我还能做什么?

编辑这是一个有问题的过程:

代码语言:javascript
复制
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
digulla  16688  4.3  4.2 784476 345464 pts/14  D    Mar28  75:02 /opt/firefox-3.0/firefox-bin

ps -ef | grep firefox相同

代码语言:javascript
复制
UID        PID  PPID  C STIME TTY          TIME CMD
digulla  16688     1  4 Mar28 pts/14   01:15:02 /opt/firefox-3.0/firefox-bin

这是唯一剩下的过程。如你所见,它不是僵尸,它在跑!它不会听kill -9,不管我是按PID还是按名字杀死它!如果我尝试连接strace,那么strace也会挂起,并且不能被杀死。也没有输出。我的猜测是FF挂在某个内核例程中,但是是哪个呢?

基于sigjuice反馈的EDIT2:

代码语言:javascript
复制
ps axopid,comm,wchan

可以显示进程在哪个内核例程中挂起。在我的例子中,令人不快的插件是Beagle Indexer (openSUSE 11.1)。禁用插件后,FF再次成为一只敏捷而快乐的狐狸。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-03-31 14:07:48

正如在对OP的注释中所指出的,D的进程状态(STAT)指示进程处于“不可中断的睡眠”状态。在现实世界中,这通常意味着它在等待I/O,并且不能/不会做任何事情-包括死亡-直到I/O操作完成。

在操作完成并返回到R/S之前,处于D状态的进程通常只会在那里停留一小部分时间。根据我的经验,如果一个进程卡在D中,最常见的情况是它试图与无法访问的NFS或其他远程文件系统通信,试图访问出现故障的硬盘驱动器,或者通过不稳定的设备驱动程序使用某些硬件。在这种情况下,恢复并允许进程终止的唯一方法是重新启动和运行fs/驱动器/硬件,以便I/O可以完成,或者放弃并重新启动系统。在NFS的特定情况下,挂载也可能最终超时并从I/O操作返回(带有一个失败代码),但这取决于挂载选项,NFS挂载通常被设置为永远等待。

这与僵尸进程不同,僵尸进程的状态将为Z

票数 125
EN

Stack Overflow用户

发布于 2009-03-29 14:44:38

仔细检查parent-id是否真的是1。如果不是,这是firefox,首先尝试sudo killall -9 firefox-bin。在此之后,尝试使用sudo killall -9 [process-id]逐个终止特定的进程ID。

进程怎么可能不监听kill -9 (neiter既不是用户也不是根用户)?

如果一个进程已经<defunct>了,然后变成了一个父进程为1的,您不能手动终止它;只有init可以。僵尸进程已经死了--它们已经失去了被杀死的能力,因为它们不再是进程,只有一个进程表条目及其相关的退出代码,等待被收集。你需要杀死父母,但你不能因为显而易见的原因而杀死init

但要了解更多一般信息,请参阅。重启自然会杀死所有东西。

票数 8
EN

Stack Overflow用户

发布于 2009-03-29 15:12:27

有没有可能,这个进程在你杀死它的时候就被重新启动了(例如由init重启)?

您可以很容易地检查这一点。如果PID在kill -9 PID之后是相同的,则该进程没有被终止,但是如果它发生了变化,则该进程已被重启。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/694720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档