2024年4月8日发(作者:)
僵尸进程的产生介绍和危害以及解决方法
如果你经常使用 Linux,你应该遇到这个术语“僵尸进程Zombie Processes”。
那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些
进程? 下面将会回答这些问题。
什么是僵尸进程?我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然
后等任务结束了,我们就停止这个进程。 进程停止后, 该进程就会从进程表中移除。
你可以通过 System-Monitor 查看当前进程。
但是,有时候有些程序即使执行完了也依然留在进程表中。
那么,这些完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程”。
它们是如何产生的?当你运行一个程序时,它会产生一个父进程以及很多子进程。 所有
这些子进程都会消耗内核分配给它们的内存和 CPU 资源。
这些子进程完成执行后会发送一个 Exit 信号然后死掉。这个 Exit 信号需要被父进程所
读取。父进程需要随后调用 wait 命令来读取子进程的退出状态,并将子进程从进程表中移
除。
若父进程正确第读取了子进程的 Exit 信号,则子进程会从进程表中删掉。
但若父进程未能读取到子进程的 Exit 信号,则这个子进程虽然完成执行处于死亡的状态,
但也不会从进程表中删掉。
僵尸进程对系统有害吗?不会。由于僵尸进程并不做任何事情, 不会使用任何资源也不
会影响其它进程, 因此存在僵尸进程也没什么坏处。 不过由于进程表中的退出状态以及
其它一些进程信息也是存储在内存中的,因此存在太多僵尸进程有时也会是一些问题。
你可以想象成这样:
“你是一家建筑公司的老板。你每天根据工人们的工作量来支付工资。 有一个工人每天
来到施工现场,就坐在那里, 你不用付钱, 他也不做任何工作。 他只是每天都来然后


发布评论