如何在 Linux 中找出 CPU 占用高的进程

你可能也会遇到在 Linux 系统中找出 CPU 占用高的进程的情形。如果是这样,那么你需要列出系统中 CPU 占用高的进程列表来确定。我认为只有两种方法能实现:使用 top 命令 和 ps 命令。出于一些理由,我更倾向于用 top 命令而不是 ps 命令。但是两个工具都能达到你要的目的,所以你可以根据需求决定使用哪个。这两个工具都被 Linux 系统管理员广泛使用。

如何在 Linux 中找出 CPU 占用高的进程演示图

怎样使用 top 命令找出 Linux 中 CPU 占用高的进程

在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题。

[root@feiyu ~]# top -b | head -50
top - 06:23:00 up 1 day,  8:40,  2 users,  load average: 0.05, 0.05, 0.05
Tasks: 119 total,   1 running, 117 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880180 total,  2223808 free,   776504 used,   879868 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2844704 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   43584   3872   2560 S   0.0  0.1   0:01.69 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kthreadd
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    5 root      20   0       0      0      0 S   0.0  0.0   0:00.28 kworker/u4:0
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.82 ksoftirqd/0
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.43 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:32.17 rcu_sched
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.39 watchdog/0
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.35 watchdog/1
   13 root      rt   0       0      0      0 S   0.0  0.0   0:00.42 migration/1
   14 root      20   0       0      0      0 S   0.0  0.0   0:00.38 ksoftirqd/1
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs
   19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.02 khungtaskd
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 writeback
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd
   23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset
   26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kblockd
   27 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 md
   28 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 edac-poller
   29 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 watchdogd
   31 root      20   0       0      0      0 S   0.0  0.0   0:13.53 kworker/1:1
   36 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kswapd0
   37 root      25   5       0      0      0 S   0.0  0.0   0:00.00 ksmd
   38 root      39  19       0      0      0 S   0.0  0.0   0:00.53 khugepaged
   39 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 crypto
   47 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kthrotld
   49 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kmpath_rdacd
   50 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kaluad
   51 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kpsmoused
   53 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 ipv6_addrconf
   66 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 deferwq
  165 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kauditd
  206 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 iscsi_eh
  256 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 ata_sff
  263 root      20   0       0      0      0 S   0.0  0.0   0:00.00 scsi_eh_0
  264 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 scsi_tmf_0
  265 root      20   0       0      0      0 S   0.0  0.0   0:00.00 scsi_eh_1

上面的命令的各部分解释:

  • top:命令
  • -b:批次档模式
  • head -50:显示输出结果的前 50 个
  • PID:进程的 ID
  • USER:进程的归属者
  • PR:进程的等级
  • NI:进程的 NICE 值
  • VIRT:进程使用的虚拟内存
  • RES:进程使用的物理内存
  • SHR:进程使用的共享内存
  • S:这个值表示进程的状态: S = 睡眠,R = 运行,Z = 僵尸进程
  • %CPU:进程占用的 CPU 比例
  • %MEM:进程使用的 RAM 比例
  • TIME+:进程运行了多长时间
  • COMMAND:进程名字

如果你想看命令的完整路径而不是命令名字,以运行下面的格式 top 命令:

[root@feiyu ~]# top -c -b | head -50
top - 06:23:48 up 1 day,  8:41,  2 users,  load average: 0.13, 0.07, 0.05
Tasks: 120 total,   1 running, 118 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 93.8 id,  3.1 wa,  0.0 hi,  3.1 si,  0.0 st
KiB Mem :  3880180 total,  2221596 free,   778064 used,   880520 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2843048 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   43584   3872   2560 S   0.0  0.1   0:01.69 /usr/lib/systemd/systemd --switched-root --system --deseri+
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 [kthreadd]
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
    5 root      20   0       0      0      0 S   0.0  0.0   0:00.28 [kworker/u4:0]
    6 root      20   0       0      0      0 S   0.0  0.0   0:00.82 [ksoftirqd/0]
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.43 [migration/0]
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [rcu_bh]
    9 root      20   0       0      0      0 S   0.0  0.0   0:32.19 [rcu_sched]
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [lru-add-drain]
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.39 [watchdog/0]
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.35 [watchdog/1]
   13 root      rt   0       0      0      0 S   0.0  0.0   0:00.42 [migration/1]
   14 root      20   0       0      0      0 S   0.0  0.0   0:00.38 [ksoftirqd/1]
   16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/1:0H]
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [kdevtmpfs]
   19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [netns]
   20 root      20   0       0      0      0 S   0.0  0.0   0:00.02 [khungtaskd]
   21 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [writeback]
   22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kintegrityd]
   23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
   24 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [bioset]
   26 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kblockd]
   27 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [md]
   28 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [edac-poller]
   29 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [watchdogd]
   31 root      20   0       0      0      0 S   0.0  0.0   0:13.53 [kworker/1:1]
   36 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [kswapd0]
   37 root      25   5       0      0      0 S   0.0  0.0   0:00.00 [ksmd]
   38 root      39  19       0      0      0 S   0.0  0.0   0:00.53 [khugepaged]
   39 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [crypto]
   47 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kthrotld]
   49 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kmpath_rdacd]
   50 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kaluad]
   51 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kpsmoused]
   53 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [ipv6_addrconf]
   66 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [deferwq]
  165 root      20   0       0      0      0 S   0.0  0.0   0:00.03 [kauditd]
  206 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [iscsi_eh]
  256 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [ata_sff]
  263 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [scsi_eh_0]
  264 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [scsi_tmf_0]
  265 root      20   0       0      0      0 S   0.0  0.0   0:00.00 [scsi_eh_1]

怎样使用 ps 命令找出 Linux 中 CPU 占用高的进程

ps 是进程状态process status的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。

[root@feiyu ~]# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
  PID  PPID %MEM %CPU CMD
 2695     1  1.1  1.0 /usr/local/qcloud/YunJing/YDEyes/YDService
 1235     1  0.0  0.9 /usr/sbin/rshim
23203  1491  0.1  0.4 sshd: root@pts/0,pts/1
 1536     1  0.1  0.1 /usr/local/qcloud/tat_agent/tat_agent
 2708  2695  0.5  0.1 /usr/local/qcloud/YunJing/YDEdr
23390 23245  0.0  0.1 top
24549  2043  0.0  0.1 [python] <defunct>
    1     0  0.0  0.0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    2     0  0.0  0.0 [kthreadd]

上面的命令的各部分解释:

  • ps:命令名字
  • -e:选择所有进程
  • -o:自定义输出格式
  • –sort=-%cpu:基于 CPU 使用率对输出结果排序
  • head:显示结果的前 10 行
  • PID:进程的 ID
  • PPID:父进程的 ID
  • %MEM:进程使用的 RAM 比例
  • %CPU:进程占用的 CPU 比例
  • Command:进程名字

如果你只想看命令名字而不是命令的绝对路径,以运行下面的格式 ps 命令:

[root@feiyu ~]# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
  PID  PPID %MEM %CPU CMD
 2695     1  1.1  1.0 /usr/local/qcloud/YunJing/YDEyes/YDService
 1235     1  0.0  0.9 /usr/sbin/rshim
23203  1491  0.1  0.4 sshd: root@pts/0,pts/1
 1536     1  0.1  0.1 /usr/local/qcloud/tat_agent/tat_agent
 2708  2695  0.5  0.1 /usr/local/qcloud/YunJing/YDEdr
23390 23245  0.0  0.1 top
24549  2043  0.0  0.1 [python] <defunct>
    1     0  0.0  0.0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    2     0  0.0  0.0 [kthreadd]
[root@VM-8-8-centos ~]# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head
  PID  PPID %MEM %CPU COMMAND
 2695     1  1.1  1.0 YDService
 1235     1  0.0  0.9 rshim
23203  1491  0.1  0.4 sshd
 1536     1  0.1  0.1 tat_agent
 2708  2695  0.5  0.1 YDEdr
23390 23245  0.0  0.1 top
    1     0  0.0  0.0 systemd
    2     0  0.0  0.0 kthreadd
    4     2  0.0  0.0 kworker/0:0H
THE END
抢沙发

请登录后发表评论

    暂无评论内容

相关推荐

wifi慢?延迟高?看这个教程帮你解决问题

wifi慢?延迟高?看这个教程帮你解决问题-可能资源网wifi慢?延迟高?看这个教程帮你解决问题-可能资源网wifi慢?延迟高?看这个教程帮你解决问题-可能资源网
+4
wifi慢?延迟高?看这个教程帮你解决问题-可能资源网
可能的头像-可能资源网可能8个月前
0319

辅助分享,地铁跑酷最新版手机后台可刷头像框)

辅助分享,地铁跑酷最新版手机后台可刷头像框)-可能资源网
金币建议控制在1亿以下钥匙控制在一万以下宝箱钥匙控制在一万以下滑板控制在一亿以下角色滑板全满
可能的头像-可能资源网可能1个月前
09

WordPress子比主题Zibll-v6.5破解版

WordPress子比主题Zibll-v6.5破解版-可能资源网WordPress子比主题Zibll-v6.5破解版-可能资源网WordPress子比主题Zibll-v6.5破解版-可能资源网WordPress子比主题Zibll-v6.5破解版-可能资源网
可能的头像-可能资源网可能10个月前
0308

迅雷11 v.11.3.1122不限速下载 电脑玩家必备

迅雷11 v.11.3.1122不限速下载 电脑玩家必备-可能资源网迅雷11 v.11.3.1122不限速下载 电脑玩家必备-可能资源网迅雷11 v.11.3.1122不限速下载 电脑玩家必备-可能资源网
可能的头像-可能资源网可能6个月前
089

宝宝是自己撞进入还是自己坐下来

宝宝是自己撞进入还是自己坐下来-可能资源网
宝宝是自己撞进入的。根据婴儿发展的一般过程,宝宝在成长过程中会逐渐学会探索自己的身体和周围环境。当宝宝开始会爬行或学会站立时,他们可能会试图探索不同的移动方式。在这个过程中,宝宝可...
可能的头像-可能资源网可能6个月前
031

所有系统全部启动启动

所有系统全部启动启动-可能资源网
原神?启动!方舟?启动!星铁?启动!崩坏?启动!王者?启动!战双?启动!深空?启动!彼界?启动!吃鸡?启动!火影?启动!暗区?启动!重返?启动!喵斯?启动!重装?启动!无期?启动!...
可能的头像-可能资源网可能10个月前
0105