1) 怎样使用 top 命令找出 Linux 中 CPU 占用高的进程
在所有监控 Linux 系统性能的工具中,Linux 的 top 命令是最好的也是最知名的一个。top 命令提供了 Linux 系统运行中的进程的动态实时视图。它能显示系统的概览信息和 Linux 内核当前管理的进程列表。它显示了大量的系统信息,如 CPU 使用、内存使用、交换内存、运行的进程数、目前系统开机时间、系统负载、缓冲区大小、缓存大小、进程 PID 等等。默认情况下,top 命令的输出结果按 CPU 占用进行排序,每 5 秒中更新一次结果。如果你想要一个更清晰的视图来更深入的分析结果,以批处理模式运行 top 命令 是最好的方法。同时,你需要 理解 top 命令输出结果的含义 ,这样才能解决系统的性能问题
# top -b | head -50
top - :: up :, user, load average: 2.46, 2.18, 1.97
Tasks: total, running, sleeping, stopped, 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 : total, free, used, buff/cache
KiB Swap: total, free, used. avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
daygeek S 79.5 3.8 :19.76 Web Content
daygeek S 20.2 6.0 :18.91 firefox
daygeek S 13.9 2.3 :43.26 gnome-shell
daygeek S 6.3 4.7 :18.12 Web Content
daygeek S 6.0 3.5 :07.85 Xorg
daygeek .1g .0g S 3.6 7.2 :49.92 VirtualBoxVM
daygeek .7g .6g S 3.0 11.0 :09.65 VirtualBoxVM
daygeek - S 2.0 0.1 :46.37 pulseaudio
daygeek S 1.7 0.2 :42.93 VBoxSVC
daygeek S 1.3 2.3 :32.56 Web Content
daygeek S 1.0 2.5 :57.44 Web Content
◈ top:命令
◈ -b
:批次档模式
◈ head -50
:显示输出结果的前 50 个
◈ PID
:进程的 ID
◈ USER
:进程的归属者
◈ PR
:进程的等级
◈ NI
:进程的 NICE 值
◈ VIRT
:进程使用的虚拟内存
◈ RES
:进程使用的物理内存
◈ SHR
:进程使用的共享内存
◈ S
:这个值表示进程的状态: S
= 睡眠,R
= 运行,Z
= 僵尸进程
◈ %CPU
:进程占用的 CPU 比例
◈ %MEM
:进程使用的 RAM 比例
◈ TIME+
:进程运行了多长时间
◈ COMMAND
:进程名字
如果你想看命令的完整路径而不是命令名字,以运行下面的格式 top 命令: top -c -b | head -50
2) 怎样使用 ps 命令找出 Linux 中 CPU 占用高的进程
ps 是进程状态process status的缩写,它能显示系统中活跃的/运行中的进程的信息。它提供了当前进程及其详细信息,诸如用户名、用户 ID、CPU 使用率、内存使用、进程启动日期时间、命令名等等的快照。
# ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head
PID PPID %MEM %CPU CMD
4.2 40.3 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
5.6 8.0 /usr/lib/firefox/firefox --new-window
4.9 6.3 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
2.0 5.1 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
3.0 4.5 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
2.3 2.5 /usr/bin/gnome-shell
3.5 2.2 /usr/lib/Xorg vt2 -displayfd -auth /run/user//gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose
2.5 2.1 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
2.7 1.8 /usr/lib/firefox/firefox -contentproc -childID -isForBrowser -prefsLen -prefMapSize -parentBuildID -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser true tab
上面的命令的各部分解释:
◈ ps:命令名字
◈ -e
:选择所有进程
◈ -o
:自定义输出格式
◈ –sort=-%cpu
:基于 CPU 使用率对输出结果排序
◈ head
:显示结果的前 10 行◈ PID
:进程的 ID
◈ PPID
:父进程的 ID
◈ %MEM
:进程使用的 RAM 比例
◈ %CPU
:进程占用的 CPU 比例
◈ Command
:进程名字
如果你只想看命令名字而不是命令的绝对路径,以运行下面的格式 ps 命令:
# ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head