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),帮助你追踪这样的问题。