top命令
top命令用于实时显示系统运行情况,如内存,CPU使用率,各进程资源占用和运行时间等信息。
语法
top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
选项:
- b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
- c : 切换显示模式,共有两种模式,一是只显示进程的名称,另一种是显示完整的路径与名称
- d : 设置信息刷新时间,默认5秒
- i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
- n : 更新的次数,完成后将会退出top
- p : 只显示特定PID进程的信息
- q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
- S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
- s : 安全模式,取消交互模式
- u : 只显示指定用户启动的进程
运行结果说明
$ top
top - 10:20:39 up 240 days, 18:13, 3 users, load average: 2.02, 2.38, 2.50
Tasks: 177 total, 2 running, 175 sleeping, 0 stopped, 0 zombie
%Cpu(s): 36.9 us, 10.3 sy, 0.0 ni, 48.4 id, 4.1 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 16264524 total, 4206512 free, 9247472 used, 2810540 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 6008632 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27617 oper 20 0 2624808 402844 13896 S 11.6 2.5 0:56.27 java
20165 oper 20 0 2677368 420772 14096 S 2.0 2.6 460:43.84 java
1080 rabbitmq 20 0 2425512 145036 4228 S 0.7 0.9 2311:24 beam.smp
674 root 20 0 362168 65240 4820 S 0.3 0.4 314:55.89 vmtoolsd
9556 oper 20 0 2626772 389968 13900 S 0.3 2.4 20:40.15 java
13589 oper 20 0 157712 2284 1568 R 0.3 0.0 0:00.04 top
18028 root 20 0 2769760 0.983g 10732 S 0.3 6.3 5740:21 java
20188 root 20 0 6086696 149180 13668 S 0.3 0.9 26:11.91 java
27440 root 20 0 0 0 0 S 0.3 0.0 0:02.37 kworker/0:2
27636 oper 20 0 2647092 417756 13988 S 0.3 2.6 1:07.63 java
......
如上所见,top命令输出以空行隔开分为2部分, 第一部分列出的是系统整体的运行情况,后面是各进程的运行信息. 中间空行在交互模式下可用于输入
首行top (与uptime命令结果相同):
10:20:39 up 240 days, 18:13, 3 users, load average: 2.02, 2.38, 2.50
10:20:39 当前时间
up 240 days, 18:13 系统运行时长
3 users 当前在线用户数
load average: 2.02, 2.38, 2.50 系统一定时间内的平均负载,分别是1分钟、5分钟、15分钟
第2行Tasks,是不同状态进程的数量统计
Tasks: 177 total, 2 running, 175 sleeping, 0 stopped, 0 zombie
177 total 总进程
2 running 运行中
175 sleeping 休眠中
0 stopped 已停止
0 zombie 僵尸进程
第3行%Cpu(s), CPU使用率
36.9 us, 10.3 sy, 0.0 ni, 48.4 id, 4.1 wa, 0.0 hi, 0.3 si, 0.0 st
36.9 us 用户空间CPU时间占比
10.3 sy 内核空间CPU时间占比,Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈
0.0 ni 调整过优先级的进程CPU时间占比
48.4 id 空闲CPU时间占比
4.1 wa 等待输入输出的CPU时间占比,表示CPU在等待I/O操作完成所花费的时间
1.4 hi:CPU硬中断时间占比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
0.3 si:CPU软中断时间占比(软中断是由程序发出的中断 )
0.0 st:被强制等待时间
第4行 KiB Mem,第5行 KiB Swap分别是内存的交换空间的使用情况,Kib是单位,按E键可切换为MiB,结果同free -m命令
total 是内存总的大小
free 空闲内存
used 已使用内存, buff/cache 内核用缓存大小
进程信息说明
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID: 进程id
USER:进程所有者
PR: 进程的优先级,越小优先级越高
NI: nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存,单位kb
RES: 进程使用的物理内存,单位kb
SHR: 进程使用的共享内存,单位kb
S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
%CPU: 进程占用的CPU使用率
%MEM: 进程使用的物理内存和总内存的百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:启动的程序名,-c可显示完整路径
交互命令
按键 | 功能 |
---|---|
c | 切换COMMAND列的显示模式,同参数-c |
e | 切换进程列表中内存显示单位 |
E | 切换顶部内存显示单位 KiB / MiB |
f | 选择可展示的列 |
i | 忽略闲置和僵尸进程 |
M | 按内存占用(RES)排序 |
k | 终止进程,中间空白行输入PID,再输入信号数字 |
P | 按CPU占用排序 |
T | 根据时间/累计时长排序 |
q | 退出 |
s | 修改刷新间隔时间(单位秒),按s后在中间空白行数字 |
u | 输入用户名过滤 |
实例
显示进程信息
# top
显示完整程序路径
top -c
以批处理模式显示程序信息
top -b
设置信息更新次数
top -n 2 #表示更新两次后终止更新显示
设置信息更新时间
top -d 3 #表示更新周期为3秒
显示指定的进程信息
top -p 2032 #显示进程号为2032的进程信息,CPU、内存占用率等
显示更新十次后退出
top -n 10
进程相关命令: