在之前的文章中我们已经讨论过 如何在 Linux 中找出内存消耗最大的进程。你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令 和 ps 命令。出于一些理由,我更倾向于用 top
命令而不是 ps
命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。
1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程
在所有监控 Linux 系统性能的工具中,Linux 的 top
命令是最好的也是最知名的一个。top
命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top
命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。
1 | # top -b | head -50 |
上面的命令的各部分解释:
top
:命令-b
:批次档模式head -50
:显示输出结果的前 50 个PID
:进程的 IDUSER
:进程的归属者PR
:进程的等级NI
:进程的 NICE 值VIRT
:进程使用的虚拟内存RES
:进程使用的物理内存SHR
:进程使用的共享内存S
:这个值表示进程的状态:S
= 睡眠,R
= 运行,Z
= 僵尸进程%CPU
:进程占用的 CPU 比例%MEM
:进程使用的 RAM 比例TIME+
:进程运行了多长时间COMMAND
:进程名字
如果你想看命令的完整路径而不是命令名字,以运行下面的格式 top
命令:
1 | # top -c -b | head -50 |
2) 怎样使用 ps 命令找出 Linux 中 CPU 占用高的进程
ps
是 进程状态 的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。
1 | # ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head |
上面的命令的各部分解释:
ps
:命令名字-e
:选择所有进程-o
:自定义输出格式–sort=-%cpu
:基于 CPU 使用率对输出结果排序head
:显示结果的前 10 行PID
:进程的 IDPPID
:父进程的 ID%MEM
:进程使用的 RAM 比例%CPU
:进程占用的 CPU 比例Command
:进程名字
如果你只想看命令名字而不是命令的绝对路径,以运行下面的格式 ps
命令:
1 | # ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head |
via: https://www.2daygeek.com/how-to-find-high-cpu-consumption-processes-in-linux/
作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy