面试必问:CPU 占用高,如何一击即中!
來源丨Linux云計算網絡
mp.weixin.qq.com/s/7AQNhK4AO3QIkGR3OPszgg
比較常用的是兩種方法:使用 top 命令和 ps 命令,其中 top 命令更好用一些,大家可以根據自己的需求決定使用哪個。
使用 top
top 命令類似于 Windows 的任務管理器,能夠顯示 Linux 系統中運行的進程的動態實時視圖。
默認情況下,top 輸出結果是按 CPU 占用進行排序,每 5s 更新一次結果。我們可以使用 top-b|head-50 顯示排前 50 的占用 CPU 最高的進程。
# 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 KiBMem: 16248556 total, 1448920 free, 8571484 used, 6228152 buff/cache KiBSwap: 17873388 total, 17873388 free, 0 used. 4596044 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2179 daygeek 203106324613584327564 S 79.53.814:19.76WebContent 1714 daygeek 204603372974600403504 S 20.26.065:18.91 firefox 1227 daygeek 204192012376332180348 S 13.92.320:43.26 gnome-shell 18324 daygeek 203296192766040127948 S 6.34.79:18.12WebContent 1170 daygeek 201008264572036546180 S 6.03.518:07.85Xorg 4684 daygeek 2033637081.1g1.0g S 3.67.213:49.92VirtualBoxVM 4607 daygeek 2045910401.7g1.6g S 3.011.014:09.65VirtualBoxVM 1211 daygeek 9-1128652682103216588 S 2.00.110:46.37 pulseaudio 4562 daygeek 2010968882881221044 S 1.70.24:42.93VBoxSVC 1783 daygeek 203123888376896134788 S 1.32.339:32.56WebContent 3286 daygeek 203089736404088184968 S 1.02.541:57.44WebContent上面的命令解釋如下:
-
-b:批次檔模式
-
head -50:顯示輸出結果的前 50 個
-
PID:進程的 ID
-
USER:進程的歸屬者
-
PR:進程的等級
-
NI:進程的 NICE 值
-
VIRT:進程使用的虛擬內存
-
RES:進程使用的物理內存
-
SHR:進程使用的共享內存
-
S:這個值表示進程的狀態: S = 睡眠,R = 運行,Z = 僵尸進程
-
%CPU:進程占用的 CPU 比例
-
%MEM:進程使用的 RAM 比例
-
TIME+:進程運行了多長時間
-
COMMAND:進程名字
如果想看進程的完整信息,可以加 -c 參數,如 top-b-c|head-50
使用 ps
ps 就是進程狀態的縮寫,可以顯示當前運行進程的詳細信息,如用戶名、用戶 ID、CPU 使用率、內存使用、進程啟動日期時間、命令名等等。
使用 ps-eo pid,ppid,%mem,%cpu,cmd--sort=-%cpu|head 可以顯示占用 CPU 較高的進程信息(注意 --sort=-%cpu)。如下:
# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | headPID PPID %MEM %CPU CMD 1852717144.240.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 tab171411525.68.0/usr/lib/firefox/firefox --new-window1832417144.96.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 tab328617142.05.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 tab178317143.04.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 tab122711522.32.5/usr/bin/gnome-shell117011683.52.2/usr/lib/Xorg vt2 -displayfd 3-auth /run/user/1000/gdm/Xauthority-nolisten tcp -background none -noreset -keeptty -verbose 31686517142.52.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 tab217917142.71.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上命令的解釋如下:
-
-e:選擇所有進程
-
-o:自定義輸出格式
-
–sort=-%cpu:基于 CPU 使用率對輸出結果排序
-
head:顯示結果的前 10 行
-
PID:進程的 ID
-
PPID:父進程的 ID
-
%MEM:進程使用的 RAM 比例
-
%CPU:進程占用的 CPU 比例
-
Command:進程名字
如果想看命令名字而不是命令的絕對路徑,可以:
# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head PID PPID %MEM %CPU COMMAND 1852717144.140.4WebContent 171411525.78.0 firefox 1832417144.96.3WebContent 328617142.05.1WebContent 178317143.04.5WebContent 122711522.32.5 gnome-shell 117011683.52.2Xorg 1686517142.42.1WebContent 217917142.71.8WebContent?
總結
以上是生活随笔為你收集整理的面试必问:CPU 占用高,如何一击即中!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020年五面蚂蚁、三面拼多多、字节跳动
- 下一篇: 为了做到微服务的高可用,鬼知道我出了多少