Linux 中 top 命令参数

267 阅读5分钟

top 命令用法

top 命令经常用来监控 linux 的系统状况, 是常用的性能分析工具, 能够实时显示系统中各个进程占用情况.

top 的使用方式 top [-d number] | top [-bnp]

参数解释

  • -d : number 代表秒数, 表示 top 命令显示的页面更新一次的时间. 默认是5秒.

  • -b : 以批次的方式执行 top

  • -n : 与 -b 配合使用, 表示需要进行几次 top 命令输出结果.

  • -p : 指定特定的 pid 进程号进行观察. 在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的)

  • ? : 显示在 top 当中可以输入的命令

  • P: 以 CPU 的使用资源排序显示

  • M : 以内存的使用资源显示

  • N : 以 pid 排序显示

  • T : 由进程使用时间累计排序显示

  • k : 给某一个 pid 一个信号, 可以用来杀死进程

  • r : 给某个 pid 重新定制一个 nice 值

  • q : 退出 top (用 ctrl+c 也可以退出)

top 各输出参数含义

查看截图

ubuntu.png

top 前5行统计信息

  1. top - 23:14:26 up 9 min, 1 user, load average: 0.00, 0.21, 0.20

    内容含义
    23:14:26表示当前时间
    up 9 min系统运行时间, 格式为 时:分
    1 user当前登录用户数
    load average: 0.00, 0.21, 0.20系统负载, 即任务队列的平均长度, 三个数值分别为 1 分钟, 5 分钟, 15分钟前到现在的平均值
    load average : 如果这个数除以逻辑 CPU 的数量, 如果高于 5 的时候表明系统在超负荷运转了.
  2. Tasks: 310 total, 2 running, 308 sleeping, 0 stopped, 0 zombie

  3. %Cpu(s): 10.5 us, 10.5 sy, 0.0 ni, 78.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

    内容含义
    310 total进出总数
    2 running正在运行的进程数
    308 sleeping睡眠的进程数
    0 stopped停止的进程数
    0 zombie僵尸的进程数
    10.5 us用户空间占用 CPU 百分比
    10.5 sy内核空间占用 CPU 百分比
    0.0 ni用户进程空间内改变过优先级的进程占用 CPU 百分比
    78.9 id空闲 CPU 百分比
    0.0 wa等待输入输出的 CPU 时间百分比
    0.0 hi硬中断 (Hardware IRQ) 占用 CPU 的百分比
    0.0 si软中断 (Software Interrupts) 占用 CPU 百分比
    0.0 st
  4. MiB Mem : 6072.9 total, 3644.1 free, 1204.7 used, 1224.1 buff/cache

  5. MiB Swap: 1401.6 total, 1401.6 free, 0.0 used. 4600.8 avail Mem

    内容含义
    MiB Mem: 6072.9 total物理内存总量
    3644.1 free空闲内存总量
    1204.7 used使用的内存物理总量
    1224.1 buff/cache作为内核缓存的内存量
    MiB Swap: 1401.6 total交换区总量
    1401.6 free空闲的交换区总量
    0.0 used使用的交换区总量
    4600.8 avail Mem代表可用于进程下一次分配的物理内存数量

上述最后提到的缓冲的交换区总量 所谓的缓冲的交换区总量, 即内存中的内容被换出到交换区, 而后又被换入到内存, 但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小. 相应的内存再次被换出时可不必对交换区写入

计算可用内存数有个近似的公式 : (第四行的 free) + (第四行的 buffers) + (第五行的 cached)

进程信息

列名含义
PID进程 id
PPID父进程 id
RUSERreal user name
UID进程所有者的用户id
USER进程所有者的用户名
GROUP进程所有者的组名
TTY启动进程的终端名称. 不是从终端启动的进程显示为 ?
PR优先级
NInice 值, 负值表示最高优先级, 正值表示低优先级
P最后使用的CPU, 仅在多 CPU 环境下有意义
%CPU上次更新到现在的 CPU 时间占用百分比
TIME进程使用的 CPU 时间总计, 单位 秒
TIME+进程使用的 CPU 时间总计, 单位 1/100秒
%MEM进程使用的物理内存百分比
VIRT进程使用的虚拟内存总量, 单位 kb, VIRT = SWAP + RES
SWAP进程使用的虚拟内存中, 被换出的大小 单位 kb
RES进程使用的, 未被换出物理内存的的大小, 单位 kb. RES = CODE + DATA
CODE可执行代码占用物理内存大小, 单位 kb
DATA可执行代码以外的部分(数据段 + 栈) 占用的物理内存大小, 单位 kb
SHR共享内存大小, 单位 kb
nFLT页面错误次数
nDRT最后一次写入到现在, 被修改过的页面
S进程状态. D = 不可中断的睡眠状态, R = 运行, S = 睡眠, T = 跟踪/停止, Z = 僵尸进程
COMMAND命令名/命令行
WCHAN若该进程在睡眠, 则显示睡眠中的系统函数名
FLAGS任务标志

其他

默认进入 top 时, 各进程是按照 CPU 的占用量来排序的.

  • 在 top 基本视图中, 按键盘数字 "1" 可以监控每个 CPU 的状况 :

    number1.png

  • 敲击键盘 B (打开关闭高亮效果)

    hightLight.png PID 为 2803 为当前 top 视图中唯一的运行态进程. 也可以敲击 Y 来打开或者关闭运行状态进程的高亮效果.

  • 敲击键盘 X (打开/关闭排序列的高亮效果)

    x.png 可以看到现在是按 %CPU 进行排序的, 也可以按 shift+< 或者 shift+> 左右切换, 改变排序序列

  • 改变进程显示字段

    在 top 基本视图中, 敲击 F 进入另一个视图, 在这里可以编辑基本视图中显示字段 :

    image.png 用上下键选择选项,按下空格键可以决定是否在基本视图中显示这个选项。

    top命令是一个非常强大的功能,但是它监控的最小单位是进程,如果想监控更小单位时,就需要用到ps或者netstate命令来满足我们的要求。

参考文献