我在 RedHat 盒子上运行 Bacula。存储守护进程 bacula-sd 有时会停止工作并变为<defunct>
.
[root@backup ~]# ps -ef | grep defunct | more
root 4801 29261 0 09:25 pts/5 00:00:00 grep defunct
root 5825 1 0 Oct18 ? 00:00:00 [bacula-sd] <defunct>
我的问题是,我怎样才能杀死这个过程?据我所知,它的父级是 1,它是 init,我不想杀死 init 进程,对吗?
“通常”杀死此进程不起作用:
[root@backup ~]# kill -0 5825
[root@backup ~]# kill -9 5825
非常感谢您的帮助!
编辑:运行
[root@backup ~]# lsof -p 5825
产生以下输出:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bacula-sd 5825 root cwd DIR 253,0 4096 3801089 /root
bacula-sd 5825 root rtd DIR 253,0 4096 2 /
bacula-sd 5825 root txt REG 253,0 2110599 368004 /usr/local/sbin/bacula-sd
bacula-sd 5825 root mem REG 253,0 75284 389867 /usr/lib/libz.so.1.2.3
bacula-sd 5825 root mem REG 253,0 46680 3604521 /lib/libnss_files-2.5.so
bacula-sd 5825 root mem REG 253,0 936908 369115 /usr/lib/libstdc++.so.6.0.8
bacula-sd 5825 root mem REG 253,0 125736 3606807 /lib/ld-2.5.so
bacula-sd 5825 root mem REG 253,0 1602128 3606885 /lib/libc-2.5.so
bacula-sd 5825 root mem REG 253,0 208352 3606892 /lib/libm-2.5.so
bacula-sd 5825 root mem REG 253,0 125744 3606887 /lib/libpthread-2.5.so
bacula-sd 5825 root mem REG 253,0 25940 3604573 /lib/libacl.so.1.1.0
bacula-sd 5825 root mem REG 253,0 15972 3604535 /lib/libattr.so.1.1.0
bacula-sd 5825 root mem REG 253,0 46548 3606908 /lib/libgcc_s-4.1.2-20080102.so.1
bacula-sd 5825 root mem REG 253,0 56422480 366368 /usr/lib/locale/locale-archive
bacula-sd 5825 root 0r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 1r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 2r CHR 1,3 1545 /dev/null
bacula-sd 5825 root 3u CHR 9,128 6469 /dev/nst0
bacula-sd 5825 root 4u IPv4 1023380 TCP backup:bacula-sd (LISTEN)
bacula-sd 5825 root 5u IPv4 2693268 TCP backup:bacula-sd->backup:53957 (CLOSE_WAIT)
bacula-sd 5825 root 7u IPv4 3248683 TCP backup:bacula-sd->backup:57629 (CLOSE_WAIT)
bacula-sd 5825 root 8u IPv4 3250966 TCP backup:bacula-sd->backup:37650 (CLOSE_WAIT)
bacula-sd 5825 root 9u IPv4 3253908 TCP backup:bacula-sd->backup:37671 (CLOSE_WAIT)
删除僵尸/失效进程的唯一方法是杀死父进程。由于父级是 init (pid 1),这也会关闭您的系统。
这几乎给你留下了两个选择。
我会选择第二个。
检查是否有内核恐慌,
检查进程是否处于“D”无法杀死的睡眠状态,在内核模式下,某些系统调用尚未返回(内核糟糕,或其他原因) http://www.nabble.com/What-c auses-an -unkillable-process--td20645581.html
您可以尝试重新启动init:
不然我也不会太担心。它没有运行,也没有占用任何资源,它就在那里,以便内核可以记住它。
如果僵尸有 init 作为其父级,则 init 已停止正常工作。init 的作用之一就是清理僵尸。如果它不这样做,其他人也不会这样做。所以唯一的解决办法就是重启。如果 init 坏了,那么重启可能会失败,所以我会关闭重要的服务,同步文件系统,然后点击电源按钮。
让我们保持恐慌,好吗?“失效”或“僵尸”进程不是进程。它只是进程表中的一个条目,带有保存的退出代码。因此,僵尸不持有资源,不占用 CPU 周期,也不使用内存,因为它不是进程。不要因为试图“杀死”僵尸进程而变得奇怪和发痒。就像他们的同名一样,他们不能被杀死,因为他们已经死了。但与吃脑的种类不同,它们绝对不会伤害任何人,也不会咬其他进程。
不要让僵尸进程吃掉你的大脑。只是忽略它们。
好像你有一个孤立的进程。据我所知,杀死这些的唯一方法是重新启动盒子。我不时在我的 ESX 服务器(引擎盖下的 linux)上发生这种情况,并且主机重新启动是解决方法(来自 VMware 支持)。
我是一个 Windows 的人,所以把它当作它的价值。
我刚遇到这个问题,我在运行wine Kindle,杀死所有wine进程后Kindle窗口不会关闭,如果我运行ps,有一个
[Kindle.exe] <defunct>
父进程为1的进程(ps.tree是一个自...制作脚本以显示进程树):我最终通过运行以下命令杀死该进程的所有线程
[Kindle.exe]
来杀死该进程和幽灵窗口: