當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

在 Linux 中找出 CPU 占用高的進(jìn)程
2021-08-10 15:48:30

列出系統(tǒng)中 CPU 占用高的進(jìn)程列表來確定。我認(rèn)為只有兩種方法能實現(xiàn):使用 top 命令ps 命令。出于一些理由,我更傾向于用 top 命令而不是 ps 命令。但是兩個工具都能達(dá)到你要的目的,所以你可以根據(jù)需求決定使用哪個。

1 怎樣使用 top 命令找出 Linux 中 CPU 占用高的進(jìn)程

在所有監(jiān)控 Linux 系統(tǒng)性能的工具中,Linux 的 top 命令是最好的也是最知名的一個。top 命令提供了 Linux 系統(tǒng)運行中的進(jìn)程的動態(tài)實時視圖。它能顯示系統(tǒng)的概覽信息和 Linux 內(nèi)核當(dāng)前管理的進(jìn)程列表。它顯示了大量的系統(tǒng)信息,如 CPU 使用、內(nèi)存使用、交換內(nèi)存、運行的進(jìn)程數(shù)、目前系統(tǒng)開機時間、系統(tǒng)負(fù)載、緩沖區(qū)大小、緩存大小、進(jìn)程 PID 等等。默認(rèn)情況下,top 命令的輸出結(jié)果按 CPU 占用進(jìn)行排序,每 5 秒中更新一次結(jié)果。如果你想要一個更清晰的視圖來更深入的分析結(jié)果,以批處理模式運行 top 命令 是最好的方法。

# top -b | head -50
top - 00:19:17 up 14:23,  1 user,  load average: 2.46, 2.18, 1.97
Tasks: 306 total,   1 running, 305 sleeping,   0 stopped,   0 zombie
%Cpu0  : 10.4 us,  3.0 sy,  0.0 ni, 83.9 id,  0.0 wa,  1.3 hi,  1.3 si,  0.0 st
%Cpu1  : 17.0 us,  3.0 sy,  0.0 ni, 78.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 13.0 us,  4.0 sy,  0.0 ni, 81.3 id,  0.0 wa,  0.3 hi,  1.3 si,  0.0 st
%Cpu3  : 12.3 us,  3.3 sy,  0.0 ni, 82.5 id,  0.3 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu4  : 12.2 us,  3.0 sy,  0.0 ni, 82.8 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  :  6.4 us,  2.7 sy,  0.0 ni, 89.2 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
%Cpu6  : 26.7 us,  3.4 sy,  0.0 ni, 68.6 id,  0.0 wa,  0.7 hi,  0.7 si,  0.0 st
%Cpu7  : 15.6 us,  4.0 sy,  0.0 ni, 78.8 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1448920 free,  8571484 used,  6228152 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4596044 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
2179 daygeek   20     3106324 613584 327564 S  79.5   3.8  14:19.76 Web Content
1714 daygeek   20     4603372 974600 403504 S  20.2   6.0  65:18.91 firefox
1227 daygeek   20     4192012 376332 180348 S  13.9   2.3  20:43.26 gnome-shell
18324 daygeek   20     3296192 766040 127948 S   6.3   4.7   9:18.12 Web Content
1170 daygeek   20     1008264 572036 546180 S   6.0   3.5  18:07.85 Xorg
4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  13:49.92 VirtualBoxVM
4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:09.65 VirtualBoxVM
1211 daygeek    9 -11 2865268  21032  16588 S   2.0   0.1  10:46.37 pulseaudio
4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:42.93 VBoxSVC
1783 daygeek   20     3123888 376896 134788 S   1.3   2.3  39:32.56 Web Content
3286 daygeek   20     3089736 404088 184968 S   1.0   2.5  41:57.44 Web Content

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

  • top:命令
  • -b:批次檔模式
  • head -50:顯示輸出結(jié)果的前 50 個
  • PID:進(jìn)程的 ID
  • USER:進(jìn)程的歸屬者
  • PR:進(jìn)程的等級
  • NI:進(jìn)程的 NICE 值
  • VIRT:進(jìn)程使用的虛擬內(nèi)存
  • RES:進(jìn)程使用的物理內(nèi)存
  • SHR:進(jìn)程使用的共享內(nèi)存
  • S:這個值表示進(jìn)程的狀態(tài): S = 睡眠,R = 運行,Z = 僵尸進(jìn)程
  • %CPU:進(jìn)程占用的 CPU 比例
  • %MEM:進(jìn)程使用的 RAM 比例
  • TIME+:進(jìn)程運行了多長時間
  • COMMAND:進(jìn)程名字

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

# top -c -b | head -50
top - 00:28:49 up 14:33,  1 user,  load average: 2.43, 2.49, 2.23
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu0  : 11.7 us,  3.7 sy,  0.0 ni, 82.3 id,  0.0 wa,  1.0 hi,  1.3 si,  0.0 st
%Cpu1  : 13.6 us,  3.3 sy,  0.0 ni, 81.1 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 10.9 us,  2.6 sy,  0.0 ni, 85.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu3  : 16.0 us,  2.6 sy,  0.0 ni, 80.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu4  :  9.2 us,  3.6 sy,  0.0 ni, 85.9 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  : 15.6 us,  2.9 sy,  0.0 ni, 80.5 id,  0.0 wa,  0.3 hi,  0.7 si,  0.0 st
%Cpu6  : 11.6 us,  4.3 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu7  :  8.0 us,  3.0 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1022456 free,  8778508 used,  6447592 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4201560 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
18527 daygeek   20     3151820 624808 325748 S  52.8   3.8  59:26.72 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
1714 daygeek   20     4764668 910940 443228 S  21.5   5.6  68:59.33 /usr/lib/firefox/firefox --new-window
1227 daygeek   20     4193108 377344 181404 S  11.6   2.3  21:47.36 /usr/bin/gnome-shell
1170 daygeek   20     1008820 572700 546844 S   5.6   3.5  19:05.10 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
18324 daygeek   20     3300288 789344 127948 S   5.0   4.9   9:46.89 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
4684 daygeek   20     3363708   1.1g   1.0g S   3.6   7.2  14:10.18 /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox
4607 daygeek   20     4591040   1.7g   1.6g S   3.0  11.0  14:28.86 /usr/lib/virtualbox/VirtualBoxVM --comment Ubuntu-18.04 --startvm e8c32dbb-8b01-41b0-977a-bf28b9db1117 --no-startvm-errormsgbox
1783 daygeek   20     3132640 451924 132168 S   2.6   2.8  39:49.66 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/l+
1211 daygeek    9 -11 2865268  21272  16828 S   2.0   0.1  11:01.29 /usr/bin/pulseaudio --daemonize=no
4562 daygeek   20     1096888  28812  21044 S   1.7   0.2   4:49.33 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
16865 daygeek   20     3073364 430596 124652 S   1.3   2.7   8:04.02 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
2179 daygeek   20     2945348 429644 172940 S   1.0   2.6  15:20.90 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /us+
2 使用 ps 命令找出 Linux 中 CPU 占用高的進(jìn)程

ps 是進(jìn)程狀態(tài)process status的縮寫,它能顯示系統(tǒng)中活躍的/運行中的進(jìn)程的信息。它提供了當(dāng)前進(jìn)程及其詳細(xì)信息,諸如用戶名、用戶 ID、CPU 使用率、內(nèi)存使用、進(jìn)程啟動日期時間、命令名等等的快照。

# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
PID  PPID %MEM %CPU CMD
18527  1714  4.2 40.3 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
1714  1152  5.6  8.0 /usr/lib/firefox/firefox --new-window
18324  1714  4.9  6.3 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
3286  1714  2.0  5.1 /usr/lib/firefox/firefox -contentproc -childID 14 -isForBrowser -prefsLen 8078 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
1783  1714  3.0  4.5 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
1227  1152  2.3  2.5 /usr/bin/gnome-shell
1170  1168  3.5  2.2 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
16865  1714  2.5  2.1 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
2179  1714  2.7  1.8 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab

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

  • ps:命令名字
  • -e:選擇所有進(jìn)程
  • -o:自定義輸出格式
  • –sort=-%cpu:基于 CPU 使用率對輸出結(jié)果排序
  • head:顯示結(jié)果的前 10 行
  • PID:進(jìn)程的 ID
  • PPID:父進(jìn)程的 ID
  • %MEM:進(jìn)程使用的 RAM 比例
  • %CPU:進(jìn)程占用的 CPU 比例
  • Command:進(jìn)程名字

如果你只想看命令名字而不是命令的絕對路徑,以運行下面的格式 ps 命令:

# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head
PID  PPID %MEM %CPU COMMAND
18527  1714  4.1 40.4 Web Content
1714  1152  5.7  8.0 firefox
18324  1714  4.9  6.3 Web Content
3286  1714  2.0  5.1 Web Content
1783  1714  3.0  4.5 Web Content
1227  1152  2.3  2.5 gnome-shell
1170  1168  3.5  2.2 Xorg
16865  1714  2.4  2.1 Web Content
2179  1714  2.7  1.8 Web Content

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >