使用CPU的不可用进程

ps aux的输出包含以下内容:

 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ubuntu 1496 9.1 0.0 0 0 pts/0 Z+ 19:47 0:30 [python] <defunct> ubuntu 1501 14.6 0.0 0 0 pts/0 Z+ 19:47 0:48 [python] <defunct> ubuntu 1502 14.8 0.0 0 0 pts/0 Z+ 19:47 0:48 [python] <defunct> ubuntu 1503 15.1 0.0 0 0 pts/0 Z+ 19:47 0:49 [python] <defunct> ubuntu 1504 15.4 0.0 0 0 pts/0 Z+ 19:47 0:50 [python] <defunct> ubuntu 1505 15.8 0.0 0 0 pts/0 Z+ 19:47 0:52 [python] <defunct> ubuntu 1506 16.0 0.0 0 0 pts/0 Z+ 19:47 0:53 [python] <defunct> ubuntu 1507 14.1 0.0 0 0 pts/0 Z+ 19:47 0:46 [python] <defunct> ubuntu 1508 14.3 0.0 0 0 pts/0 Z+ 19:47 0:47 [python] <defunct> ubuntu 1509 14.4 0.0 0 0 pts/0 Z+ 19:47 0:47 [python] <defunct> ubuntu 1510 14.6 0.0 0 0 pts/0 Z+ 19:47 0:48 [python] <defunct> ubuntu 1511 14.9 0.0 0 0 pts/0 Z+ 19:47 0:49 [python] <defunct> ubuntu 1512 10.7 0.0 0 0 pts/0 Z+ 19:47 0:35 [python] <defunct> ubuntu 1513 71.3 0.0 0 0 pts/0 Z+ 19:47 3:55 [python] <defunct> 

这些是通过多处理产生的一系列进程,已经完成,正在等待父进程join。 他们为什么要占用CPU?

如果这只是ps一个神器,我怎么才能准确的看到有多lessCPU被使用?

一个僵尸进程(即一个'不存在')不消耗CPU:它只是被内核保留下来,以便父进程可以检索有关它的信息(例如返回状态,资源使用情况等)。

ps命令指示的CPU使用率对应于进程运行时的CPU使用情况:也就是说, 它终止之前并成为僵尸。

这些是僵尸进程,如stat列中的Z所示 – 直到他们的父进程终止,它们才会被清理。 我不太了解python,但大概你在python解释器中调用fork或类似的东西来产生它们。 杀死翻译和僵尸将收割(清理)。

如果你想在CPU上获取最新的信息,请尝试使用“top”命令。

除此之外,我更喜欢从“ps -ef”输出,而不是“ps aux”aux总是让我感到非标准的黑客(因此缺乏用于分离命令和参数的“ – ”),但是它也不能很好地工作其他Unix系统如HPUX,AIX等

“ps -ef”显示ppid(父pid),帮助你追踪这样的问题。