如何在 Linux 中找出 CPU 占用高的進程
在之前的文章中我們已經(jīng)討論過 如何在 Linux 中找出內(nèi)存消耗最大的進程。你可能也會遇到在 Linux 系統(tǒng)中找出 CPU 占用高的進程的情形。如果是這樣,那么你需要列出系統(tǒng)中 CPU 占用高的進程列表來確定。我認為只有兩種方法能實現(xiàn):使用 top 命令 和 ps 命令。出于一些理由,我更傾向于用 top 命令而不是 ps 命令。但是兩個工具都能達到你要的目的,所以你可以根據(jù)需求決定使用哪個。這兩個工具都被 Linux 系統(tǒng)管理員廣泛使用。
1) 怎樣使用 top 命令找出 Linux 中 CPU 占用高的進程
在所有監(jiān)控 Linux 系統(tǒng)性能的工具中,Linux 的 top 命令是很好的也是很知名的一個。top 命令提供了 Linux 系統(tǒng)運行中的進程的動態(tài)實時視圖。它能顯示系統(tǒng)的概覽信息和 Linux 內(nèi)核當(dāng)前管理的進程列表。它顯示了大量的系統(tǒng)信息,如 CPU 使用、內(nèi)存使用、交換內(nèi)存、運行的進程數(shù)、目前系統(tǒng)開機時間、系統(tǒng)負載、緩沖區(qū)大小、緩存大小、進程 PID 等等。默認情況下,top 命令的輸出結(jié)果按 CPU 占用進行排序,每 5 秒中更新一次結(jié)果。如果你想要一個更清晰的視圖來更深入的分析結(jié)果,以批處理模式運行 top 命令 是很好的方法。同時,你需要 理解 top 命令輸出結(jié)果的含義 ,這樣才能解決系統(tǒng)的性能問題。
- # 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:進程的 ID
- USER:進程的歸屬者
- PR:進程的等級
- NI:進程的 NICE 值
- VIRT:進程使用的虛擬內(nèi)存
- RES:進程使用的物理內(nèi)存
- SHR:進程使用的共享內(nèi)存
- S:這個值表示進程的狀態(tài): S = 睡眠,R = 運行,Z = 僵尸進程
- %CPU:進程占用的 CPU 比例
- %MEM:進程使用的 RAM 比例
- TIME+:進程運行了多長時間
- COMMAND:進程名字
如果你想看命令的完整路徑而不是命令名字,以運行下面的格式 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 占用高的進程
ps 是進程狀態(tài)process status的縮寫,它能顯示系統(tǒng)中活躍的/運行中的進程的信息。它提供了當(dāng)前進程及其詳細信息,諸如用戶名、用戶 ID、CPU 使用率、內(nèi)存使用、進程啟動日期時間、命令名等等的快照。
- # 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:選擇所有進程
- -o:自定義輸出格式
- –sort=-%cpu:基于 CPU 使用率對輸出結(jié)果排序
- head:顯示結(jié)果的前 10 行
- PID:進程的 ID
- PPID:父進程的 ID
- %MEM:進程使用的 RAM 比例
- %CPU:進程占用的 CPU 比例
- Command:進程名字
如果你只想看命令名字而不是命令的絕對路徑,以運行下面的格式 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