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 各输出参数含义
查看截图
top 前5行统计信息
-
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 的时候表明系统在超负荷运转了. -
Tasks: 310 total, 2 running, 308 sleeping, 0 stopped, 0 zombie
-
%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 -
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
内容 含义 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 |
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 | 进程使用的虚拟内存中, 被换出的大小 单位 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 的状况 :
-
敲击键盘
B
(打开关闭高亮效果)PID 为 2803 为当前 top 视图中唯一的运行态进程. 也可以敲击
Y
来打开或者关闭运行状态进程的高亮效果. -
敲击键盘
X
(打开/关闭排序列的高亮效果)可以看到现在是按
%CPU
进行排序的, 也可以按shift+<
或者shift+>
左右切换, 改变排序序列 -
改变进程显示字段
在 top 基本视图中, 敲击
F
进入另一个视图, 在这里可以编辑基本视图中显示字段 :用上下键选择选项,按下空格键可以决定是否在基本视图中显示这个选项。
top
命令是一个非常强大的功能,但是它监控的最小单位是进程,如果想监控更小单位时,就需要用到ps
或者netstate
命令来满足我们的要求。