当前位置:  开发笔记 > 编程语言 > 正文

对于Linux上的进程,kill -9怎么可能没有效果?

如何解决《对于Linux上的进程,kill-9怎么可能没有效果?》经验,为你挑选了2个好方法。

我正在编写一个插件,以便在您访问网站时自动突出显示文本字符串.这就像突出显示搜索结果,但自动和许多单词; 它可以用于过敏的人,使单词真正脱颖而出,例如,当他们浏览食物网站时.

但我有问题.当我尝试关闭一个空的,新鲜的FF窗口时,它会以某种方式阻止整个过程.当我终止进程时,所有窗口都消失了,但Firefox进程保持活动状态(父PID为1,不监听任何信号,打开大量资源,仍然占用CPU,但不会让步).

所以有两个问题:

    如何一个进程不听kill -9(既不是用户也不是root用户)怎么可能?

    除了重启之外,有什么我可以做的吗?

[编辑]这是违规的过程:

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

UID        PID  PPID  C STIME TTY          TIME CMD
digulla  16688     1  4 Mar28 pts/14   01:15:02 /opt/firefox-3.0/firefox-bin

这是剩下的唯一过程.正如你所看到的,它不是一个僵尸,它正在运行!它不会听杀-9,无论我是用PID还是名字杀了!如果我尝试连接strace,那么strace也挂起并且不能被杀死.也没有输出.我的猜测是FF挂起了一些内核例程但是哪个?

[EDIT2]根据sigjuice的反馈:

ps axopid,comm,wchan

可以向您显示进程挂起的内核例程.就我而言,有问题的插件是Beagle Indexer(openSUSE 11.1).禁用插件后,FF又是一只快速而快乐的狐狸.



1> Dave Sherohm..:

如对OP的评论中所述,进程状态(STAT)D表示进程处于"不间断睡眠"状态.在现实世界中,这通常意味着它在等待I/O并且不会/不会做任何事情 - 包括死亡 - 直到I/O操作完成.

D状态中的进程通常仅在操作完成之前的几分之一秒内返回到R/ S.根据我的经验,如果一个进程陷入困境D,它通常会尝试与无法访问的NFS或其他远程文件系统进行通信,尝试访问失败的硬盘驱动器,或通过片状设备驱动程序使用某些硬件.在这种情况下,恢复并允许进程死亡的唯一方法是让fs/drive/hardware备份并运行,以便I/O可以完成或放弃并重启系统.在NFS的特定情况下,安装也可能最终超时并从I/O操作返回(带有故障代码),但这取决于安装选项,并且将NFS安装设置为永久等待是很常见的.

这与僵尸进程截然不同,僵尸进程的状态为Z.


查看正在发生的事情的好方法是运行`ps -o pid,wchan 1234`(插入相关的pid),这将告诉你哪个*等待通道*它在内核中被卡住了.您可以在错误报告或Google中使用它,它可能会让您知道发生了什么 - 它是否卡在NFS,其他驱动程序等等.
是的,可怕的磁盘睡眠:) +1,这是一个很清晰的答案.
呵呵.我不认为有一种方法可以在NFS/SMB /等上设置超时.在*你已经了解自己的情况之后?

2> John Feminel..:

仔细检查parent-id是否为1.如果不是firefox,那么首先尝试sudo killall -9 firefox-bin.之后,尝试单独删除特定进程ID sudo killall -9 [process-id].

一个进程不能监听kill -9(用户还是root用户)怎么可能?

如果进程已经消失,然后成为父级为1 的僵尸,则无法手动终止它; 只能init.僵尸进程已经死亡并且已经消失 - 它们已经失去了被杀的能力,因为它们不再是进程,只有进程表条目及其相关的退出代码,等待收集.你需要杀死父母,你不能init因为明显的原因而杀人.

但请参阅此处获取更多一般信息.重启会自然会杀死一切.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有