面试必问: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 | head

PID 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 tab

171411525.68.0/usr/lib/firefox/firefox --new-window

1832417144.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 tab

328617142.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 tab

178317143.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 tab

122711522.32.5/usr/bin/gnome-shell

117011683.52.2/usr/lib/Xorg vt2 -displayfd 3-auth /run/user/1000/gdm/Xauthority-nolisten tcp -background none -noreset -keeptty -verbose 3

1686517142.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 tab

217917142.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
发布了50 篇原创文章 · 获赞 1669 · 访问量 213万+

猜你喜欢

转载自blog.csdn.net/zl1zl2zl3/article/details/104992507