top 查看系统状态

top 命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。同时 top 命令也提供互动式界面,用热键可以管理。

命令格式:

top -hv|-bcEeHiOSs1 -d secs -n max -u|U user -p pids -o field -w [cols]

常用选项:

-d
    指定更新时间(单位秒,如果有小数点则换算成 ms,默认值 5)

-u
    指定用户名

-p
    指定进程号

-n
    指定更新的次数,完成后退出

-S
    累积模式

交互式命令:

命令 说明
h 显示帮助
k 终止一个进程,首先输入进程号,然后输入发送的信号(15 或 9)
i 显示/隐藏闲置和僵死的进程
q 退出
r 重新设置一个进程的优先级别(数值越小优先级越高)
S 切换到累计模式
s 改变更新时间
c 显示/隐藏完整命令行
l 显示/隐藏平均负载和启动时间信息(即第一行)
t 显示/切换/隐藏进程和 CPU 状态信息(即第二和第三行)
m 显示/切换/隐藏内存信息(即第四和第五行)
n 设置显示进程的数量
N 以 PID 的大小进行排序
P 以 CPU 占用率进行排序
M 以内存占用率大小进行排序
T 根据时间/累计时间进行排序
w 将当前设置写入 ~/.toprc 文件中

使用实例:

# 默认输出
[Linux]$ top
top - 18:02:42 up  8:32,  1 user,  load average: 0.57, 0.61, 0.95
Tasks: 251 total,   1 running, 250 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.7 us,  2.2 sy,  0.0 ni, 94.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  23665.3 total,  20068.8 free,   1731.2 used,   1865.3 buff/cache
MiB Swap:    977.0 total,    977.0 free,      0.0 used.  21354.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1300 glenn     20   0 2469984  31268  22272 S   6.7   0.1   3:24.92 pulseaudio
   1547 glenn     20   0  317344  23052   6744 S   6.7   0.1   2:11.17 ibus-daemon
   8982 glenn     20   0 1856612 138784  77872 S   6.7   0.6   0:55.73 rhythmbox
   9735 glenn     20   0   10228   3788   3168 R   6.7   0.0   0:00.01 top
      1 root      20   0  164068  10516   7784 S   0.0   0.0   0:04.12 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp

输出说明:

第一行,系统运行时间和平均负载:

top - 18:02:42 up  8:32,  1 user,  load average: 0.57, 0.61, 0.95
  • 当前时间
  • 已运行时间
  • 当前登录用户的数量
  • 最近 5、10 和 15 分钟内的系统平均负载

第二行,进程任务:

Tasks: 251 total,   1 running, 250 sleeping,   0 stopped,   0 zombie
  • total 系统进程总数
  • running 处于运行中的进程
  • sleeping 睡眠的进程总数
  • stoped 停止的进程总数
  • zombie 僵尸进程总数

第三行,CPU 状态:

%Cpu(s):  3.7 us,  2.2 sy,  0.0 ni, 94.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

不同模式下所占 cpu 时间百分比:

  • us(user): 运行(未调整优先级) 用户进程的 CPU 时间
  • sy(system): 运行内核进程的 CPU 时间
  • ni(niced):运行已调整优先级用户进程的 CPU 时间
  • wa(IO wait): 用于等待 IO 完成的 CPU 时间
  • hi:处理硬件中断的 CPU 时间
  • si: 处理软件中断的 CPU CPU时间
  • st:虚拟机模式中处理 hypervisor 的 CPU 时间

第四和第五行,内存使用:

MiB Mem :  23665.3 total,  20068.8 free,   1731.2 used,   1865.3 buff/cache
MiB Swap:    977.0 total,    977.0 free,      0.0 used.  21354.1 avail Mem
  • Mem:物理内存
  • Swap:虚拟内存
  • total:内存总量
  • used:使用中的内存总量
  • free:空闲内存总量
  • buffers:缓存的内存量

各进程的状态:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  • PID:进程 ID,进程的唯一标识符
  • USER:进程所有者(用户名)
  • PR:进程的调度优先级,'rt'表示进程运行在实时态
  • NI:进程的 nice 值(优先级)。越小的值意味着越高的优先级,可以是负值
  • VIRT:进程使用的虚拟内存总量(单位 kb)
  • RES:使用中的未被换出的物理内存大小(单位 kb)
  • SHR:使用的共享内存大小(单位 kb)
  • S:进程的状态:
    • D 不可中断的睡眠状态
    • R 运行状态
    • S 睡眠状态
    • T 被跟踪或已停止状态
    • Z 僵尸状态
  • %CPU:两次更新时间之间所使用的 CPU 百分比
  • %MEM:进程使用的可用物理内存百分比
  • TIME+:任务启动后到现在所使用的全部 CPU 时间,精确到百分之一秒
  • COMMAND:运行进程所使用的命令

提示

切换排序列

top 默认是以 CPU 的占用比排序。可以通过 SHIFT+> 键向右或 SHIFT+> 向左改变排序列。