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

进程相关命令:




返回软件开发辅助网 | 常用命令列表

shell语法手册