1、简介
Linux top命令用于实时显示进程的动态,是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。
2、常用指令
语法
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
3、top展示界面各参数含义(版本号 procps-ng version 3.3.10)
top - 19:26:14 up 462 days, 1:49, 1 user, load average: 0.09, 0.05, 0.05
Tasks: 641 total, 1 running, 640 sleeping, 0 stopped, 0 zombie
%Cpu0 : 1.7 us, 0.3 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 14871080 total, 1030044 free, 2584280 used, 11256756 buff/cache
KiB Swap: 4194300 total, 3406820 free, 787480 used. 11790572 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7744 nginx 20 0 726384 24340 10656 S 1.0 0.2 0:00.25 php-fpm
7745 nginx 20 0 712456 20080 8992 S 1.0 0.1 0:00.05 php-fpm
7763 nginx 20 0 723752 21960 10764 S 0.7 0.1 0:00.21 php-fpm
6703 nginx 20 0 215204 4856 1448 S 0.3 0.0 207:51.58 nginx
7663 nginx 20 0 726304 25692 12264 S 0.3 0.2 0:00.26 php-fpm
7762 nginx 20 0 726048 23692 10820 S 0.3 0.2 0:00.18 php-fpm
9488 root 20 0 156992 2664 1460 R 0.3 0.0 0:00.13 top
1 root 20 0 197272 10048 1880 S 0.0 0.1 67:09.74 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.43 kthreadd
第一行为任务队列信息
top - 19:26:14 当前时间
up 462 days, 1:49, 系统已运行时间
1 user, 当前登录用户数
load average: 0.09, 0.05, 0.05 系统负载,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行为进程信息
Tasks: 641 total, 进程总数
1 running, 正在运行的进程数
640 sleeping, 休眠的进程数
0 stopped, 停止的进程数
0 zombie 僵尸进程数
第三~六行为cpu信息,使用1打开查看所有cpu,当前服务器为6核
%Cpu0 : 1.7 us, 0.3 sy, 0.0 ni, 97.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
%Cpu1 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu0 :
1.7 us, 用户空间占用CPU百分比
0.3 sy, 内核空间占用CPU百分比
0.0 ni, 用户进程空间内改变过优先级的进程占用CPU百分比
97.6 id, 空闲CPU百分比
0.0 wa, 等待输入输出的CPU时间百分比
0.0 hi, 硬件CPU中断占用百分比
0.0 si, 软中断占用百分比
0.3 st 虚拟机占用百分比
第七行为物理内存
KiB Mem : 单位kb
14871080 total, 物理内存总数
1030044 free, 空闲内存空间大小
2584280 used, 已使用物理内存大小
11256756 buff/cache 用作内核缓存的内存量
第八行为置换内存
KiB Swap: 单位kb
4194300 total, 交换区总量
3406820 free, 空闲交换区总量
787480 used. 已使用交换区大小
11790572 avail Mem 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
第九行
进程信息区统计信息区域的下方显示了各个进程的详细信息,默认显示
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND(各参数含义见下交互f指令)
交互操作指令
h或? 显示帮助画面
Help for Interactive Commands - procps-ng version 3.3.10
Window 2:Job: Cumulative mode Off. System: Delay 3.0 secs; Secure mode Off.
Z,B,E,e Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
l,t,m Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
f,F,X Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width
L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
n,#,^O . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
C,... . Toggle scroll coordinates msg for: up,down,left,right,home,end
k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W,Y Write configuration file 'W'; Inspect other output 'Y'
q Quit
( commands shown with '.' require a visible task display window )
Press 'h' or '?' for help with Windows,
Type 'q' or to continue
l(L的小写) 切换显示平均负载和启动时间信息。
t 切换显示进程和CPU状态信息。
m 切换显示内存信息。
f 显示出所有进程字段信息, 通过操作可以从当前显示中添加或者删除项目
Fields Management for window 1:Def, whose current sort field is %CPU
Navigate with Up/Dn, Right selects for move then or Left commits,
'd' or toggles display, 's' sets sort. Use 'q' or to end!
通过up和down可以选中某个字段,*表示选中展示的列,可以通过空格或d来进行切换显示或隐藏,按选中后按右箭头可以选中该行,再执行up或down可以调整该字段的展示顺序位置,按q或esc键可以退出当前操作。
* PID = Process Id
* USER = Effective User Name
* PR = Priority
* NI = Nice Value
* VIRT = Virtual Image (KiB)
* RES = Resident Size (KiB)
* SHR = Shared Memory (KiB)
* S = Process Status
* %CPU = CPU Usage
* %MEM = Memory Usage (RES)
* TIME+ = CPU Time, hundredths
* COMMAND = Command Name/Line
PPID = Parent Process pid
UID = Effective User Id
RUID = Real User Id
RUSER = Real User Name
SUID = Saved User Id
SUSER = Saved User Name
GID = Group Id
GROUP = Group Name
PGRP = Process Group Id
TTY = Controlling Tty
TPGID = Tty Process Grp Id
SID = Session Id
nTH = Number of Threads
P = Last Used Cpu (SMP)
TIME = CPU Time
SWAP = Swapped Size (KiB)
CODE = Code Size (KiB)
DATA = Data+Stack (KiB)
nMaj = Major Page Faults
nMin = Minor Page Faults
nDRT = Dirty Pages Count
WCHAN = Sleeping in Function
Flags = Task Flags
CGROUPS = Control Groups
SUPGIDS = Supp Groups IDs
SUPGRPS = Supp Groups Names
TGID = Thread Group Id
ENVIRON = Environment vars
vMj = Major Faults delta
vMn = Minor Faults delta
USED = Res+Swap Size (KiB)
nsIPC = IPC namespace Inode
nsMNT = MNT namespace Inode
nsNET = NET namespace Inode
nsPID = PID namespace Inode
nsUSER = USER namespace Inode
nsUTS = UTS namespace Inode
a 可以控制不同的展示内容,有4种排序模式
Fields Management for window 1:Def, whose current sort field is %CPU
Fields Management for window 2:Job, whose current sort field is PID
Fields Management for window 3:Mem, whose current sort field is %MEM
Fields Management for window 4:Usr, whose current sort field is USER
按a选择排序模式模式之后,按q或esc键退出,即可生效
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
top - 20:39:14 up 462 days, 3:02, 1 user, load average: 0.02, 0.05, 0.05
Tasks: 641 total, 1 running, 640 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.4 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 14871080 total, 656668 free, 3112808 used, 11101604 buff/cache
KiB Swap: 4194300 total, 3406112 free, 788188 used. 11269180 avail Mem
PID to signal/kill [default pid = 12305]此处输入pid或者直接回车,即可删除默认或指定进程
TIME+ %CPU %MEM PPID PR NI S VIRT RES UID COMMAND
0:00.23 0.9 0.2 12130 20 0 S 726236 24252 48 php-fpm: pool php-fpm
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
i 忽略闲置和僵死进程。
q 退出程序。
M 根据驻留内存大小进行排序。
c 切换显示命令名称和完整命令行。
P 根据CPU使用百分比大小进行排序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
o或者O 改变显示项目的顺序。
T 根据时间/累计时间进行排序。
S 切换到累计模式。
W 将当前设置写入~/.toprc文件中。