top 命令详解

2022-06-27 12:58:47 浏览数 (2)

1. 概述

top 命令是 linux 下常用的性能分析工具,能够实时监控系统中各进程的资源占用情况。 top 命令会动态显示,不停刷新,显示系统中 CPU 最敏感的任务列表。 当然,也可以根据用户指定按照 CPU 使用、内存使用和执行时间对任务进行排序。

2. TOP 前五行的统计信息

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

2.1. 第一行 — 任务队列信息

与 uptime 命令的执行结果相同,内容如下:

代码语言:javascript复制
top - 20:45:10 up 10:08,  1 user,  load average: 0.00, 0.01, 0.05
任务队列信息

内容

意义

20:45:10

当前时间

up 10:08

系统运行时间(10小时08分钟)

1 user

当前登录用户数

load average: 0.00, 0.01, 0.05

系统负载(任务队列的平均长度),分别是1分钟、5分钟、15分钟到现在的平均值

  • 系统负载:0.00 到 1.00 之间表示非常通畅,任务无需等待,超过 1.00 表示超出负载,2.00 表示任务是负载能力的二倍
  • 正常情况下,系统负载应该在 0.7*n 以下(n 为 CPU 核心数)

2.2. 第二行 — 进程信息

代码语言:javascript复制
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
进程信息

内容

意义

105 total

进程总数

1 running

正在运行的进程数

104 sleeping

睡眠进程数

0 stopped

停止进程数

0 zombie

僵尸进程数

2.3. 第三行 — CPU信息

当有多个CPU时,内容可能会超过一行。

代码语言:javascript复制
Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
CPU 信息

内容

意义

0.0%us

用户空间占CPU百分比

0.1%sy

内核空间占CPU百分比

0.0%ni

用户进程空间内改变过优先级的进程占用CPU百分比

99.9%id

空闲CPU百分比

0.0%wa

等待输入输出的CPU时间百分比

0.0%hi

硬件中断占CPU时间百分比

0.0%si

软件终端占CPU时间百分比

0.0%st

提供给虚拟化环境执行占CPU时间百分比

2.4. 第四行 — 内存信息

代码语言:javascript复制
Mem:    288428k total,   257956k used,    30472k free,    40160k buffers
内存信息

内容

意义

288428k total

物理内存总量

257956k used

使用的物理内存总量

30472k free

空闲内存总量

40160k buffers

用作内核缓存的内存量

2.5. 第五行 — 内存交换区信息

代码语言:javascript复制
Swap:  1046524k total,     3856k used,  1042668k free,    82000k cached
交换区信息

内容

意义

1046524k total

交换区总容量

3856k used

使用交换区的总量

1042668k free

空闲交换区总量

82000k cached

缓冲交换区总量

  • 缓冲交换区:内存中的内容已经被换出交换区而载入内存,该部分交换区对应的内存被换出时可以不必再对交换区写入

3. 进程信息

进程信息

列名

含义

PID

进程ID

PPID

父进程ID

RUSER

real user name

UID

进程所有者用户ID

USER

进程所有者用户名

GROUP

进程所有者组名

TTY

启动进程的终端名

PR

优先级

NI

nice值,负数表示高优先级,正数表示低优先级

P

最后使用的CPU,仅用于多 CPU 环境

%CPU

上次更新到现在的 CPU 时间占用百分比

TIME

进程使用的CPU时间总计(以秒为单位)

TIME

进程使用的CPU时间总计(以1/100秒为单位)

%MEM

进程使用物理内存百分比

VIRT

进程使用虚拟内存总量(以KB为单位) VIRT=SWAP RES

SWAP

进程使用的虚拟内存中,被换出的大小

RES

进程使用的未被换出的物理内存大小(以KB为单位) RES=CODE DATA

CODE

可执行代码占用物理内存总大小

DATA

数据段 栈占用的物理内存总大小

SHR

共享内存总大小

nFLT

页面错误次数

nDRT

最后一次写入到现在,被修改过的页面数

S

进程状态

COMMAND

命令名/命令行

WCHAN

若进程在睡眠,则显示睡眠中的系统函数名

Flags

任务标志,参考 sched.h

4. top 中的命令

命令

意义

默认值

A

分屏显示

off(全屏显示)

d

刷新间隔

3秒

H

线程模式

off

I

Irix/Solaris模式切换

solaris 模式

p

监控某个PID

no(监控所有PID)

s

保护模式

off

B

是否支持粗体

on

l

显示任务队列信息

on

t

显示任务/cpu状态

on

m

显示内存/交换区状态

on

1

显示全部CPU核心状态

off

b

用背景突出显示

off

c

显示详细命令

off

i

显示僵尸进程

on

J

数字右对齐

on

j

列右对齐

off

R

按照 pid 从大到小排序

on

S

显示进程占用CPU的总时间

off

u

只显示某个用户ID

off

U

显示全部用户ID

off

x

突出显示用于排序的列

off

y

突出显示正在运行的任务

on

z

是否配色

off

h/?

显示help

 

Z

配置颜色

 

E/e

切换内存数值单位(K、M、G)

off

f/F

显示或隐藏某些信息

 

X

设置列宽

0

L/&

查找

 

</>

翻页

 

V

显示进程树

off

k

kill

 

r

重新指定进程优先级

 

W

写入配置文件

 

q/<ESC>

退出

 

0 人点赞