linux 中系统性能分析命令 top 用法详解

目录

top 命令是 Linux 系统下常用的性能分析工具,它能够实时显示系统中各个进程的资源占用状况,类似于 Windows 下的任务管理器。

命令输出示例

在命令行下输入 top 后回车出现如下内容:

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

统计信息区解释

前五行是系统整体的统计信息。

第一行:任务队列信息

01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
  • 01:06:48 - 当前时间
  • up 1:22 - 系统运行时间,格式为时:分
  • 1 user - 当前登录用户数
  • load average: 0.06, 0.60, 0.48 - 系统负载,即任务队列的平均长度;三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值

第二、三行:进程和 CPU 信息

Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
  • 29 total - 进程总数
  • 1 running - 正在运行的进程数
  • 28 sleeping - 睡眠的进程数
  • 0 stopped - 停止的进程数
  • 0 zombie - 僵尸进程数
  • 0.3% us - 用户空间占用 CPU 百分比
  • 1.0% sy - 内核空间占用 CPU 百分比
  • 0.0% ni - 用户进程空间内改变过优先级的进程占用 CPU 百分比
  • 98.7% id - 空闲 CPU 百分比
  • 0.0% wa - 等待输入输出的 CPU 时间百分比
  • 0.0% hi0.0% si - 硬中断、软中断 CPU 时间百分比

第四、五行:内存信息

Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
  • 191272k total - 物理内存总量
  • 173656k used - 使用的物理内存总量
  • 17616k free - 空闲内存总量
  • 22052k buffers - 用作内核缓存的内存量
  • 192772k total (Swap)- 交换区总量
  • 0k used - 使用的交换区总量
  • 192772k free - 空闲交换区总量
  • 123988k cached - 缓冲的交换区总量(内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖)

进程信息区

统计信息区域的下方显示了各个进程的详细信息。

列含义说明

列名含义
PID进程 ID
USER进程所有者的用户名
PR优先级
NInice 值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位 KB。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位 KB。RES=CODE+DATA
SHR共享内存大小,单位 KB
S进程状态:D(不可中断睡眠)R(运行)S(睡眠)T(跟踪/停止)Z(僵尸进程)
%CPU上次更新到现在的 CPU 时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的 CPU 时间总计,单位 1/100 秒
COMMAND命令名/命令行

默认情况下仅显示比较重要的列。可通过交互键更改显示内容。

交互命令

显示内容调整

  • f - 选择显示的内容。按后会显示列的列表,按 a-z 可显示或隐藏对应列,最后按回车确定。
  • o - 改变列的显示顺序。按小写 a-z 将相应列向右移动,大写 A-Z 向左移动,回车确定。
  • FO - 将进程按照相应列进行排序。大写 R 键倒转排序。

进程管理

  • k - 终止一个进程。系统提示输入进程 PID 和信号。一般用信号 15;无法正常结束用信号 9。
  • r - 重新安排进程优先级。输入 PID 和优先级值。正值降低优先级,负值提高。

显示切换

  • l - 切换显示平均负载和启动时间信息。
  • m - 切换显示内存信息。
  • t - 切换显示进程和 CPU 状态信息。
  • c - 切换显示命令名称和完整命令行。
  • i - 忽略闲置和僵死进程。
  • H - 显示进程中的线程。

其他

  • M - 根据驻留内存大小进行排序。
  • P - 根据 CPU 使用百分比大小进行排序。
  • T - 根据时间/累计时间进行排序。
  • W - 将当前设置写入 ~/.toprc 文件中。
  • q - 退出程序。
  • Ctrl+L - 擦除并重写屏幕。

命令行选项

top [-d delay] [-p PID] [-q] [-c] [-S] [-s] [-n]
  • -d - 指定每两次屏幕刷新之间的时间间隔。
  • -p - 通过指定监控进程 ID 来仅仅监控某个进程的状态。
  • -q - 无延迟进行刷新;若有超级用户权限,以最高优先级运行。
  • -S - 指定累计模式。
  • -s - 在安全模式中运行(去除交互命令的潜在危险)。
  • -i - 不显示闲置或僵死进程。
  • -c - 显示整个命令行而不只是命令名。

#监控告警