内容一:top 命令解析
1.1 top 命令输出结果
# top
top - 14:16:16 up 6 days, 20:52, 4 users, load average: 0.00, 0.00, 0.00
Tasks: 393 total, 1 running, 392 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 5848752 total, 5709944 used, 138808 free, 4960 buffers
KiB Swap: 2103292 total, 0 used, 2103292 free. 4507072 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8 root 20 0 0 0 0 S 0.332 0.000 2:12.60 rcu_sched
716 z0042h2+ 20 0 15484 2840 2132 R 0.332 0.049 0:00.09 top
31993 root 20 0 0 0 0 S 0.332 0.000 0:00.08 kworker/u32:2
1 root 20 0 189604 5892 4120 S 0.000 0.101 2:35.86 systemd
2 root 20 0 0 0 0 S 0.000 0.000 0:00.72 kthreadd
4 root 0 -20 0 0 0 S 0.000 0.000 0:00.00 kworker/0:0H
1.2 top 命令输出结果简介
1.2.1 top 命令输出结果分类
1) 前 5 行是整体的统计信息
2) 后面的是具体的进程信息
1.2.2 统计信息说明
1.2.2.1 第 1 行信息
1) 14:16:16 系统当前时间
2) 20:52 系统运行了多久
3) 4 users 系统当前登录用户数
4) load average: 0.00, 0.00, 0.00 系统平均负载
(
补充:
1) 其中的三个数值分别代表:1,5,15 分钟的系统平均负载
2) 单核 CPU 的情况下:0.00 代表 0 负载,1.00 代表满载,超过 1 代表超负荷
3) 理想情况是:CPU 的核心数 * 0.7 = 整个系统的理想负载
)
1.2.2.2 第 2 行信息
1) Tasks: 393 total 总进程数
2) 1 running 正在运行的进程数
3) 392 sleeping 睡眠进程数
4) 0 stopped 停止进程数
5) 0 zombie 僵尸进程数
1.2.2.3 第 3 行信息
(
注意:
1) 这一行默认是所有 CPU 核心加在一起的平均值,如果有 1 个核心那满值就是 100%,如果有 5 个核心那总值就是 500%
2) 如果此时输入数字 1 ,则可以切换至每个单核 CPU 的负载情况,再输入数字 1,则可以再切换回来
)
1) 0.0 us 用户空间占用 CPU 的百分比
2) 0.0 sy 内核空间占用 CPU 的百分比
3) 0.0 ni 非实时的进程的优先级,取值范围为从 -20 到 19,数值越小优先级越高
4) 100.0 id 空闲的 CPU 的百分比
5) 0.0 wa CPU 等待输入输出的时间百分比
6) 0.0 hi 服务因硬件中断所消耗的时间百分比
7) 0.0 si 服务因软件中断所消耗的时间百分比
8) 0.0 st 虚拟机被物理机偷去的 CPU 时间百分比
1.2.2.4 第 4 行信息
1) 5848752 total 总物理内存量
2) 5709944 used 已经使用的物理内存量
3) 138808 free 剩余的物理内存量
4) 4960 buffers 用作内核缓存的内存量
1.2.2.5 第 5 行信息
1) 2103292 total 总交换分区量
2) 0 used 已经使用的交换分区量
3) 2103292 free 剩余交换分区量
4) 4507072 cached Mem 用作缓存的交换分区量
1.2.3 进程信息说明
(
补充:
1) 此时按下 “f” 键可以选择要显示的信息
2) 此时按下 “方向” 键翻看想查阅的内容
3) 此时按下 “s” 键可以开启显示这一信息
4) 此时按下 “d” 键可以关闭显示这一信息
4) 带 * 号的是已经选择要显示的信息
)
1) PID (Process Id) 进程的 id
2) USER (User Name) 进程所有者的用户
3) PR (Priority) 优先级
4) NI (Nice value) nice 值(负值表示高优先级,正值表示低优先级)
5) VIRT ( Virtual Image (kb) ) 进程使用的虚拟内存量,单位 kb
6) RES ( Resident size (kb) ) 进程使用的、未被换出的物理内存大小,单位 kb
7) SHR (Shared Mem size (kb) ) 共享内存大小,单位 kb
8) S (Process Status) 进程状态,可以为 D R S T 和 Z
(补充:D 表示不可中断的睡眠状态,R 表示运行,S 表示睡眠,T 表示跟踪/停止,Z 表示僵尸进程)
9) %CPU (CPU usage) 上上次更新到上次更新时进程 CPU 占用平均百分比
(注意:此值可能会超过 100% ,但不会超过:CPU 总核心数 * 100% )
10) %MEM ( Memory usage (RES) ) 上上次更新到上次更新时进程使用的物理内存百分比
11) TIME+ ( CPU Time, hundredths ) 进上上次更新到上次更新时进程使用 CPU 的总时间,单位 1/100 秒
12) COMMAND (Command name/line) 命令名或命令行 (命令和选项)
内容二:top 非交互式命令选项
1) -b 以批处理模式执行命令
2) -c <command> 在执行了 top 命令之后再直接执行交互命令
3) -d <time> 屏幕刷新间隔时间
4) -i 忽略僵尸进程
5) -s 以安全模式执行命令
6) -S 以累积模式执行命令
7) -i <时间> 设置间隔时间
8) -u <用户> 指定只显示某个用户的进程
9) -p <进程号> 指定只显示某个 PID 的进程
10) -n <次数> 指定显示循环的次数
内容三:top 交互命令 (即是在键入了 top 命令之后再键入以下命令)
3.1 基础操作
按 “h” 显示帮助
3.2 设置操作
1) 按下 “k” 键再按下 “<pid>” 再按下 “<回车>” 键,将某个 pid 为 <pid> 的进程删除
2) 按下 “r” 键再按下 “<ni>” 再按下 “<回车>” 键,将某个进程的 ni 设置为 <ni>,取值范围为从 -20 到 19,数值越小优先级越高
(注意:只有 root 的取值范围才是 -20 到 19 ,普通用户的取值范围是 0 到 19)
3) 按下 “esc” 键,退出 top 命令当前的子状态,如果没有子状态则不退出
4) 按下 “q” 键,退出 top
3.3 显示操作
1) 按下 “d” 键再按 <number> 再按下 “回车” ,将刷新频率修改为 <number> 秒
2) 按下 “s” 键再按 <number> 再按下 “回车”,将刷新的延迟时间修改为 <number> 秒 (默认是 5S)
3) 按下 “n” 键再按 <number> 再按下 “回车”,将显示的行数修改为 <number> 行 (默认显示能满屏的行数)
4) 按下 “f” 键,选择要显示的信息
5) 按下 “i” 键,不显示闲置和僵死进程,再按下 “i” 键会取消
6) 按下 “S” 键,切换到累积模式,再按下 “S” 键会取消
7) 按下 “l” 键,隐藏第 1 行总负载信息,再按下 “l” 键会取消
8) 按下 “t” 键, 隐藏第 2~3 行 CPU 信息,再按下 “t” 键会取消
9) 按下 “m” 键,隐藏第 4~5 行内存信息,再按下 “m” 键会取消
10) 按下 “1” 键,显示 CPU 所有核心的信息,每核显示 1 行,再按下 “1” 键会取消
3.4 排序操作
1) 按下 “M” 键,根据使用内存的大小进行排序
2) 按下 “P” 键,根据使用 CPU 的大小进行排序
3) 按下 “T” 键,根据开启的时间进行排序
内容四:top 命令使用案例
4.1 案例一:显示 top 命令运行 1 秒钟时的信息
# top -bn 1
4.2 案例二:显示 top 命令运行 1 秒钟时的 CPU 占用率最高的进程
# top -bn 1 -i -c