如何在 Linux 中找出 CPU 佔用高的程序
在之前的文章中我們已經討論過 如何在 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 命令輸出結果的含義 ,這樣才能解決系統的效能問題。
# 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
:顯示輸出結果的前 50 個PID
:程式的 IDUSER
:程式的歸屬者PR
:程式的等級NI
:程式的 NICE 值VIRT
:程式使用的虛擬記憶體RES
:程式使用的實體記憶體SHR
:程式使用的共享記憶體S
:這個值表示程式的狀態: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
是程式狀態的縮寫,它能顯示系統中活躍的/執行中的程式的資訊。它提供了當前程式及其詳細資訊,諸如使用者名稱、使用者 ID、CPU 使用率、記憶體使用、程式啟動日期時間、命令名等等的快照。
# 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 使用率對輸出結果排序head
:顯示結果的前 10 行PID
:程式的 IDPPID
:父程式的 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
via: https://www.2daygeek.com/how-to-find-high-cpu-consumption-processes-in-linux/
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:lxbwolf 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 在Linux中,如何檢視佔用CPU最多的程序?Linux
- 如何在 Linux 中找出記憶體消耗最大的程序Linux記憶體
- 在Linux中,如何查詢系統中佔用CPU最高的程序?Linux
- 排查Java程序CPU佔用高之三板斧Java
- JVM找出佔用CPU最高的執行緒JVM執行緒
- Java中的CPU佔用高和記憶體佔用高的問題排查Java記憶體
- chrome佔用高cpu的原因 排查大致思路Chrome
- java應用CPU佔用率過高排查Java
- 如何在 Linux shell 中找出所有包含指定文字的檔案Linux
- win10正式版cpu佔用高的解決方法_win10正式版cpu佔用高怎麼辦Win10
- Linux程序排程器-CPU負載Linux負載
- java專案cpu佔用高排查方法(chatgpt)JavaChatGPT
- Node.js 應用高 CPU 佔用率的分析方法Node.js
- Window中檢視埠被哪個程序佔用,並結束程序的方法
- mysql佔用CPU過高的解決辦法(新增索引)MySql索引
- 如何在Ubuntu Linux中獲取CPU溫度UbuntuLinux
- win10 2004系統cpu佔用高怎麼辦_win10 2004系統佔用cpu過高解決教程Win10
- Linux系統中CPU佔用率較高問題排查思路與解決方法Linux
- 一次生產環境CPU佔用高的排查
- win10system佔用磁碟高怎麼辦_win10system佔用cpu高如何解決Win10
- win10開機cpu高佔用怎麼解決 win10電腦一開機cpu佔用過高處理方法Win10
- cpu佔用率100%怎麼解決 cpu佔用率高怎麼辦
- 檢視Ubuntu上佔用指定埠的程序Ubuntu
- Linux--程序繫結NUMA節點或cpu核心Linux
- win11服務和控制器應用佔用CPU過高
- Dubbo Hession反序列化導致CPU佔用飆高用例分析
- Linux應用——程序基礎Linux
- 面試問題---JAVA程式CPU佔用過高怎麼定位面試Java
- win10系統中WMI程式佔用cpu使用率高怎麼解決Win10
- win10系統BackgroundTransferHost.exe佔用CPU高怎麼辦Win10
- 伺服器CPU佔用過高和哪些因素有關呢伺服器
- win10空閒cpu很多cpu佔滿怎麼辦 win10cpu佔用率高怎麼辦Win10
- win10系統中“來自microsoft download、upload host”程式佔用cpu高如何關閉Win10ROS
- [轉帖]Windows netstat 檢視埠、程序佔用Windows
- mac的cpu某段時間佔用很高Mac
- windows10cpu佔用率高怎麼辦Windows
- win10系統下sppsvc.exe佔用cpu高如何關閉Win10
- java程式佔用cpu異常升高Java