top命令主要用来查看系统状况,CPU、内存、进程资源占用情况。
使用格式如下:
top
-d 10 //表示所打开的页面10秒刷新一次,不指定默认为5秒
-b //以批处理模式显示程序信息
-n 2 //设置信息更新次数,表示更新2次后终止更新显示
-p 1018 //显示进程号为1018的进程信息,CPU、内存占用率等
top输出显示如下:
[root@localhost ~]# top
top - 10:31:12 up 13 min, 1 user, load average: 0.06, 0.04, 0.05
Tasks: 192 total, 1 running, 191 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
MiB Mem : 780.3 total, 324.9 free, 244.2 used, 211.2 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 408.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
775 root 20 0 0 0 0 I 0.3 0.0 0:01.96 kworker/0:5-events
1585 root 20 0 153356 5448 4196 S 0.3 0.7 0:00.26 sshd
1630 root 20 0 65380 4376 3736 R 0.3 0.5 0:00.55 top
1 root 20 0 179144 13392 8572 S 0.0 1.7 0:02.33 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd
7 root 20 0 0 0 0 I 0.0 0.0 0:00.03 kworker/0:1-events_power_efficient
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
10 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
11 root 20 0 0 0 0 I 0.0 0.0 0:00.10 rcu_sched
12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
13 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
16 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
17 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd
第一行: 任务队列信息,同uptime
top - 10:31:12
显示当前时间
up 18 min
当前系统运行了多长时间,单位:分
1 user
当前登录此系统的用户数量
load average: 0.08, 0.02, 0.02
系统的负载情况,任务队列的平均长度,三个数值分别为1分钟以内,5分钟以内,15分钟以内系统负载的平均值。
此项的数值依据/proc/loadavg
,/proc
是一个虚拟的文件系统,不占磁盘空间,此目录可以查看linux内核的一些运行数据。
/proc/cpuinfo
可以查看相关CPU信息。
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l \\查看物理CPU个数
cat /proc/cpuinfo | grep "cpu cores" | uniq \\查看物理CPU有几核
cat /proc/cpuinfo | grep "processor" | wc -l \\查看逻辑CPU个数。一般情况下,逻辑cpu=物理CPU个数×每颗核数
/proc/meminfo
可以获取内存信息。
/proc/loadavg
获取信息如下:
[root@localhost ~]# cat /proc/loadavg
0.00 0.02 0.00 1/217 1715
前三个数值表示1、5、15分钟内CPU负载,1/217代表当前系统共有217个进程(包括线程在内),有1个进程正在运行。 1715表示最近一次运行过的进程PID
第二行: 进程信息
Tasks: 197 total
进程总数
1 running
正在运行的进程
197 sleeping
睡眠的进程数
0 stopped
停止的进程数
0 zombie
僵尸进程
第三行: CPU信息
内容 | 解析 |
---|---|
%Cpu(s): 0.0 us | 用户空间占用CPU百分比 |
0.3 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
99.3 id | 空闲CPU所占百分比 |
0.0 wa | 进程等待IO所占用CPU百分比,IO繁忙,这个值会比较高 |
0.0 hi | 进程硬件中断所占百分比 |
0.3 si | 进程软中断所占百分比 |
0.0 st | 虚拟机所占百分比 |
第四行: 物理内存
内容 | 解析 |
---|---|
MiB Mem : 780.3 total | 物理内存,单位kb |
324.9 free | 剩余内存,单位kb |
244.2 used | 已使用物理内存,单位kb |
211.2 buff/cache | 用于内核缓存的内存,单位kb |
第五行: swap内存
内容 | 解析 |
---|---|
MiB Swap: 2048.0 total | swap内存(虚拟内存),单位kb |
2048.0 free | 剩余内存,单位kb |
0.0 used | 已使用物理内存,单位kb |
408.1 avail Mem | 可用于进程下一次分配的物理内存数量,单位kb |
序号 列名 含义 是否默认显示
a PID //进程id 默认显示
b PPID //父进程id 默认不显示
c RUSER //Real user name 默认不显示
d UID //进程所有者的用户id 默认不显示
e USER //进程所有者的用户名 默认显示
f GROUP //进程所有者的组名 默认不显示
g TTY //启动进程的终端名。不是从终端启动的进程则显示为 ? 默认不显示
h PR //内核实际的优先级,一般等于NI+20。值越低优先级越高 默认显示
i NI //nice值(用户可以设置的)。负值表示高优先级,正值表示低优先级。也就是值越小优先级越高 默认显示
j P //最后使用的CPU,仅在多CPU环境下有意义 默认不显示
k %CPU //上次更新到现在的CPU时间占用百分比 默认显示
l TIME //进程使用的CPU时间总计,单位秒 默认不显示
m TIME+ //进程使用的CPU时间总计,单位1/100秒 默认显示
n %MEM //进程使用的物理内存百分比 默认显示
o VIRT //进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 默认显示
p SWAP //进程使用的虚拟内存中,被换出的大小,单位kb。 默认不显示
q RES //进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 默认显示
r CODE //可执行代码占用的物理内存大小,单位kb 默认不显示
s DATA //可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb 默认不显示
t SHR //共享内存大小,单位kb 默认显示
u nFLT //页面错误次数 默认不显示
v nDRT //最后一次写入到现在,被修改过的页面数。 默认不显示
w S //进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) 默认不显示
x COMMAND //命令名/命令行 默认显示
y WCHAN //若该进程在睡眠,则显示睡眠中的系统函数名 默认不显示
z Flags //任务标志,参考 sched.h 默认不显示
在top显示页面,可以按数字1查看每个CPU的使用情况。
按f可以编辑默认视图中显示字段
Fields Management for window 1:Def, whose current sort field is %CPU
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!
* PID = Process Id TTY = Controlling Tty vMj = Major Faults delta
* USER = Effective User Name TPGID = Tty Process Grp Id vMn = Minor Faults delta
* PR = Priority SID = Session Id USED = Res+Swap Size (KiB)
* NI = Nice Value nTH = Number of Threads nsIPC = IPC namespace Inode
* VIRT = Virtual Image (KiB) P = Last Used Cpu (SMP) nsMNT = MNT namespace Inode
* RES = Resident Size (KiB) TIME = CPU Time nsNET = NET namespace Inode
* SHR = Shared Memory (KiB) SWAP = Swapped Size (KiB) nsPID = PID namespace Inode
* S = Process Status CODE = Code Size (KiB) nsUSER = USER namespace Inode
* %CPU = CPU Usage DATA = Data+Stack (KiB) nsUTS = UTS namespace Inode
* %MEM = Memory Usage (RES) nMaj = Major Page Faults LXC = LXC container name
* TIME+ = CPU Time, hundredths nMin = Minor Page Faults RSan = RES Anonymous (KiB)
* COMMAND = Command Name/Line nDRT = Dirty Pages Count RSfd = RES File-based (KiB)
PPID = Parent Process pid WCHAN = Sleeping in Function RSlk = RES Locked (KiB)
UID = Effective User Id Flags = Task Flags <sched.h> RSsh = RES Shared (KiB)
RUID = Real User Id CGROUPS = Control Groups CGNAME = Control Group name
RUSER = Real User Name SUPGIDS = Supp Groups IDs NU = Last Used NUMA node
SUID = Saved User Id SUPGRPS = Supp Groups Names
SUSER = Saved User Name TGID = Thread Group Id
GID = Group Id OOMa = OOMEM Adjustment
GROUP = Group Name OOMs = OOMEM Score current
PGRP = Process Group Id ENVIRON = Environment vars
前面带*号表示默认视图展示该列,用上下键进行移动,空格来确认是否展示该列,按q退出。