由于我是 Linux/Unix 系统的新手并且刚刚阅读了有关僵尸进程的信息,因此我有一个问题。我现在有 10 个。我需要杀死他们吗?如果需要,为什么?它们是我系统的负担吗?
592 processes: 581 sleeping, 1 running, 10 zombie, 0 stopped
Run Code Online (Sandbox Code Playgroud)
Mar*_*rco 29
你不能杀死僵尸,它已经死了。
该进程的资源是免费的,可供其他进程使用。剩下的是进程表中的一个条目。这不会影响性能,不用担心。
wul*_*lxz 16
ps中出现的这些僵尸进程是什么?我杀了他们,但他们不走!
僵尸是死进程。你不能杀死死人。所有进程最终都会死亡,当它们死亡时,它们会变成僵尸。他们几乎不消耗资源,这是意料之中的,因为他们已经死了!僵尸的原因是僵尸的父进程(进程)可以检索僵尸的退出状态和资源使用统计信息。父级通过使用 wait() 系统调用之一向操作系统发出信号,表明它不再需要僵尸。
当一个进程死亡时,它的子进程都成为进程号 1 的子进程,也就是 init 进程。Init总是 在等待孩子们死去,这样他们就不会成为僵尸。
如果您有僵尸进程,则意味着它们的父进程尚未等待这些僵尸进程(查看 ps -l 显示的 PPID)。你有三个选择:修复父进程(让它等待);杀死父母;或与之共存。请记住,与它共存并不难,因为僵尸在 ps 的输出中只多占用了一行。
来源:http : //www.linuxsa.org.au/tips/zombies.html
如果您正在疯狂杀戮,这个超级用户线程可能对您很有趣:您 如何找到僵尸进程的父进程?
你不需要杀死他们。
建立一些基本的理解:
每个进程都是父进程的子进程(init 进程除外,但我们不必担心)。
当子进程完成执行时,它可能仍然包含父进程想要访问的数据,通常是一个描述子进程结果的退出代码(是否成功?是否出错?错误代码是什么?)。
一个完成的子进程作为僵尸进程在进程表中徘徊,直到父进程“收割”或等待子进程,这只是父进程告诉操作系统它不再需要该子进程;它已经读取了它想要的任何返回值,并完成了它。此时,系统会清理进程表中的条目。
| 归档时间: |
|
| 查看次数: |
3246 次 |
| 最近记录: |