top命令
常用命令选项
$ top -d 1 指定刷新屏幕时间间隔
$ top -d 1 -p 10126 查看指定进程的动态信息
$ top -d 1 -p 10126,1 查看多个指定进程的动态信息
$ top -d 1 -u apache 查看指定用户的进程
$ top -d 1 -b -n 2 > top.txt 将2次top信息写入到文件
$ top -o %MEM 按照内存排序,从大到小
$ top -H 显示线程
常见标题解释
$ top
top - 16:23:05 up 68 days, 23:07, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 116 total, 1 running, 115 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8008632 total, 4764280 free, 428308 used, 2816044 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 7262552 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1188 root 20 0 50088 1116 780 S 1.0 0.0 1082:03 rshim
8916 root 20 0 1095744 158952 19256 S 0.7 2.0 819:23.35 YDService
1 root 20 0 43700 4044 2600 S 0.0 0.1 1:08.24 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:02.46 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:02.74 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.37 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 2:37.36 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:13.19 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:11.66 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.37 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:01.30 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root rt 0 0 0 0 S 0.0 0.0 0:11.60 watchdog/2
18 root rt 0 0 0 0 S 0.0 0.0 0:00.41 migration/2
19 root 20 0 0 0 0 S 0.0 0.0 0:00.54 ksoftirqd/2
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/2:0H
22 root rt 0 0 0 0 S 0.0 0.0 0:11.20 watchdog/3
23 root rt 0 0 0 0 S 0.0 0.0 0:00.36 migration/3
24 root 20 0 0 0 0 S 0.0 0.0 0:00.53 ksoftirqd/3
26 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0H
28 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
29 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
30 root 20 0 0 0 0 S 0.0 0.0 0:01.39 khungtaskd
- PID: 进程ID
- USER: 运行进程的用户
- PR:任务的计划优先级
- NI:nice值
- VIRT: 进程虚拟内存大小
- RES: 进程常驻内存大小,不包括Swap
- SHR: 共享内存大小
- %MEM: 进程占用物理内存占系统总内存的百分比
- TIME+:CPU时间,显示高精度
- COMMAND:进程名字
-
S:进程状态。下面进程状态其中之一
-
D = 不可中断状态
- R = 运行或者可运行状态
- S = 可中断状态睡眠
- T = 暂停或者
- t = 跟踪状态
- Z = 僵尸进程
交互命令
$ top 命令输入后 按f,可配置显示的列
* PID = Process Id DATA = Data+Stack (KiB)
* USER = Effective User Name nMaj = Major Page Faults
* PR = Priority nMin = Minor Page Faults
* NI = Nice Value nDRT = Dirty Pages Count
* VIRT = Virtual Image (KiB) WCHAN = Sleeping in Function
* RES = Resident Size (KiB) Flags = Task Flags <sched.h>
* SHR = Shared Memory (KiB) CGROUPS = Control Groups
* S = Process Status SUPGIDS = Supp Groups IDs
* %CPU = CPU Usage SUPGRPS = Supp Groups Names
* %MEM = Memory Usage (RES) TGID = Thread Group Id
* TIME+ = CPU Time, hundredths ENVIRON = Environment vars
* COMMAND = Command Name/Line vMj = Major Faults delta
PPID = Parent Process pid vMn = Minor Faults delta
UID = Effective User Id USED = Res+Swap Size (KiB)
RUID = Real User Id nsIPC = IPC namespace Inode
RUSER = Real User Name nsMNT = MNT namespace Inode
SUID = Saved User Id nsNET = NET namespace Inode
SUSER = Saved User Name nsPID = PID namespace Inode
GID = Group Id nsUSER = USER namespace Inode
GROUP = Group Name nsUTS = UTS namespace Inode
PGRP = Process Group Id
TTY = Controlling Tty
TPGID = Tty Process Grp Id
SID = Session Id
nTH = Number of Threads
P = Last Used Cpu (SMP)
TIME = CPU Time
SWAP = Swapped Size (KiB)
CODE = Code Size (KiB)
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
W 对更改进行保存
z 更改主题颜色
Z 对主题颜色进行配置,进入配置界面后,0-7选择颜色,a,w选择显示内容,回车保存
q 返回
e 切换单位
E 切换单位
H 切换线程显示模式
h 查看交互命令帮助
top的man中文手册
TOP(1) 用户命令 TOP(1)
名称
top - 显示 Linux 进程
简介
top -hv|-bcEeHiOSs1 -d 秒 -n 次数 -u|U 用户 -p 进程ID -o 字段 -w [列]
传统的开关 `-' 和空白符是可选的。
描述
top 程序提供了一个动态的实时视图,可以显示正在运行的系统信息。它可以显示系统概要信息以及当前由
Linux 内核管理的进程或线程列表。显示的系统概要信息类型以及进程信息的类型、顺序和大小都可以由用户配置,
并且这种配置可以在重启后保持。
该程序提供了一个有限的交互界面用于进程操作,并提供了一个更为广泛的界面用于个人配置,涵盖其操作的各个方面。
虽然本文档中提到的是 top,你可以随意命名该程序。这个新名字,可能是一个别名,将会在 top 的显示中反映出来,
并在读取和写入配置文件时使用。
概述
文档
余下的目录
概述
操作
Linux 内存类型
1. 命令行选项
2. 概要显示
a. 系统运行时间和负载平均值
b. 任务和CPU状态
c. 内存使用情况
3. 字段/列显示
a. 字段描述
b. 管理字段
4. 交互命令
a. 全局命令
b. 概要区域命令
c. 任务区域命令
1. 外观
2. 内容
3. 大小
4. 排序
d. 颜色映射
5. 替代显示选项
a. 窗口概述
b. 窗口命令
c. 窗口滚动
d. 窗口搜索
e. 窗口过滤
6. 文件
a. 个人配置文件
b. 添加检查条目
c. 系统配置文件
d. 系统限制文件
7. 一些奇妙的技巧
a. 内核魔术
b. 窗口弹跳
c. 大鸟窗口
d. 交换窗口
8. 错误, 9. 参见
操作
当使用 top 时,两个最重要的按键是帮助键 (h 或 ? ) 和退出键 (q)。
另外,当你完成时,也可以使用传统的中断键 (^C)。
当第一次启动时,你将看到主 top 屏幕上的这些传统元素:1)摘要区域;2)字段/列标题;3)任务区域。
每个部分将在后续部分中详细介绍。在摘要区域和列标题之间还有一个输入/消息行,不需要进一步解释。
主 top 屏幕通常非常适应 X-Windows 下终端尺寸的变化。其他 top 屏幕可能不太适应,尤其是那些包含静态文本的屏幕。
这最终取决于你的特定窗口管理器和终端仿真器。在某些情况下,他们对终端大小和当前内容的看法可能与 top 的看法不同,
top 的看法始终基于操作系统调用。
任何重新调整大小操作后,如果 top 屏幕损坏、不完整或无序,只需键入一些无害的字符或光标移动键通常会恢复它。
在极端情况下,以下序列几乎肯定会恢复它:
键/命令 目标
^Z 挂起 top
fg 恢复 top
<左键> 强制重新绘制屏幕(如果需要)
但如果显示仍然损坏,还有一步可以尝试。在挂起 top 后但在恢复它之前插入此命令:
键/命令 目标
reset 恢复终端设置
注意:top 的显示宽度将限制为 512 个位置。显示所有字段大约需要 250 个字符。剩余的屏幕宽度通常分配给当前可见的任何可变宽度列。
这些可变宽度列,如 COMMAND,在主题 3a. 字段描述中有所说明。实际输出宽度也可能受 -w 开关影响,该开关在主题 1. 命令行选项中讨论。
最后,top 的某些屏幕或功能需要使用光标移动键,如标准箭头键加 Home、End、PgUp 和 PgDn 键。
如果你的终端或仿真器没有提供这些键,可以接受以下组合作为替代:
键 等效键
左键 alt + h
下键 alt + j
上键 alt + k
右键 alt + l
Home alt + ctrl + h
PgDn alt + ctrl + j
PgUp alt + ctrl + k
End alt + ctrl + l
在提示输入行并以 <Enter> 键终止的情况下,上键和下键具有特殊意义。那些键或其别名可用于检索以前的输入行,然后可以编辑并重新输入。
还有四个额外的键可用于行定向输入。
键 特殊意义
上键 回忆旧字符串以重新编辑
下键 回忆新字符串或删除整行
Insert 在插入和覆盖模式之间切换
Delete 删除光标位置的字符,移动其他字符向左
Home 跳至输入行的开头
End 跳至输入行的末尾
Linux 内存类型
对于我们的目的,有三种类型的内存,一种是可选的。首先是物理内存,这是一个有限的资源,代码和数据在执行或引用时必须驻留其中。其次是可选的交换文件,修改(脏)内存可以保存在其中,如果对物理内存的需求过多,可以稍后检索。最后是虚拟内存,这是一个几乎无限的资源,服务于以下目标:
1. 抽象,无需物理内存地址/限制
2. 隔离,每个进程在一个独立的地址空间
3. 共享,一个映射可以满足多个需求
4. 灵活性,将虚拟地址分配给文件
无论这些形式的内存是哪种,所有的内存都作为页面(通常为 4096 字节)进行管理,但默认情况下在 top 中以 KiB(千字节)表示。
在主题 `2c. 内存使用` 中讨论的内存处理的是整个系统的物理内存和交换文件。在主题 `3. 字段/列显示` 中审查的内存涵盖了三种内存类型,但针对的是单个进程。
对于每个这样的进程,每个内存页面限制在下面表格中的一个象限中。物理内存和虚拟内存可以包含任何四个象限,而交换文件只包含第1到第3象限。
当修改时,第4象限中的内存将作为其自己的专用交换文件。
私有 | 共享
1 | 2
匿名 . 堆栈 |
. malloc() |
. brk()/sbrk() | . POSIX shm*
. mmap(PRIVATE, ANON) | . mmap(SHARED, ANON)
-----------------------+----------------------
. mmap(PRIVATE, fd) | . mmap(SHARED, fd)
文件支持 . 程序/共享库 |
3 | 4
以下可能有助于解释进程级内存值,这些值显示为可扩展列并在主题 `3a. 字段描述` 中讨论。
%MEM - 简单地说是 RES 除以总物理内存
CODE - 象限 3 的 `程序` 部分
DATA - 象限 1 的 VIRT 全部加上象限 3 的所有显式 mmap 文件支持页面
RES - 占用物理内存的任何内容,从 Linux-4.5 开始,是以下三个字段的总和:
RSan - 象限 1 页面,包括任何修改过的前象限 3 页面
RSfd - 象限 3 和象限 4 页面
RSsh - 象限 2 页面
RSlk - 不能交换出的 RES 子集(任何象限)
SHR - RES 的子集(不包括 1,包含所有 2 和 4,一些 3)
SWAP - 可能是除 4 之外的任何象限
USED - 简单地说是 RES 和 SWAP 的总和
VIRT - 所有在用和/或保留的(所有象限)
注意:即使程序映像和共享库被视为进程私有,它们也会被内核记作共享(SHR)。
1. 命令行选项
top 的命令行语法如下:
-hv|-bcEeHiOSs1 -d 秒 -n 次数 -u|U 用户 -p 进程ID -o 字段 -w [列]
通常必需的开关 (`-`) 甚至空白符都是可选的。
-h | -v :帮助/版本
显示库版本和使用提示,然后退出。
-b :批处理模式操作
以批处理模式启动 top,这对于将 top 的输出发送到其他程序或文件可能很有用。在此模式下,top 不接受输入,
并运行直到你用 `-n` 命令行选项设置的迭代次数限制,或直到被杀死。
-c :命令行/程序名称切换
启动 top 时,最后记住的 `c` 状态反转。因此,如果 top 显示命令行,那么该字段将显示程序名称,反之亦然。
有关更多信息,请参见 `c` 交互命令。
-d :延迟时间间隔:-d ss.t (秒.十分之一秒)
指定屏幕更新之间的延迟,并覆盖个人配置文件中的相应值或启动默认值。稍后可以使用 `d` 或 `s` 交互命令更改。
分数秒是有效的,但不允许负数。然而,如果 top 以安全模式运行,除了 root 之外(除非使用了 `s` 命令行选项),则禁止进行这些更改。
有关安全模式的更多信息,请参见主题 6d. 系统限制文件。
-e :强制任务内存缩放:-e k | m | g | t | p
指示 top 强制任务区域内存按以下单位缩放:
k - 千字节
m - 兆字节
g - 吉字节
t - 太字节
p - 拍字节
稍后可以使用 `e` 命令切换更改。
-E :强制摘要内存缩放:-E k | m | g | t | p | e
指示 top 强制摘要区域内存按以下单位缩放:
k - 千字节
m - 兆字节
g - 吉字节
t - 太字节
p - 拍字节
e - 艾字节
稍后可以使用 `E` 命令切换更改。
-H :线程模式操作
指示 top 显示单个线程。如果没有此命令行选项,则显示每个进程的所有线程的汇总。稍后可以使用 `H` 交互命令更改。
-i :空闲进程切换
启动 top 时,最后记住的 `i` 状态反转。当此切换为关闭时,自上次更新以来未使用任何 CPU 的任务将不会显示。
有关此切换的更多信息,请参见主题 4c. 任务区域命令,大小。
-n :迭代次数限制:-n 次数
指定 top 应生成的最大迭代次数或帧数,然后结束。
-o :覆盖排序字段:-o 字段名
指定任务将按其排序的字段名称,与配置文件中反映的无关。你可以在字段名之前加上 `+` 或 `-` 以覆盖排序方向。
以 `+` 开头将强制从高到低排序,而 `-` 将确保从低到高排序。
此选项主要用于支持自动/脚本化批处理模式操作。
-O :输出字段名称
此选项充当上述 -o 选项的一种帮助。它将使 top 打印每个可用的字段名称在单独的行上,然后退出。
这些名称受 NLS(国家语言支持)翻译的影响。
-p :监视进程ID模式:-pN1 -pN2 ... 或 -pN1,N2,N3 ...
仅监视具有指定进程ID的进程。此选项可以给出多达 20 次,或者你可以提供一个最多包含 20 个进程ID的逗号分隔列表。
可以同时使用两种方法。
进程ID值为零将被视为 top 程序本身在运行时的进程ID。
这是一个命令行选项,如果你希望返回正常操作,无需退出并重新启动 top -- 只需发出以下任何一个交互命令:`=`、`u` 或 `U`。
`p`、`u` 和 `U` 命令行选项是互斥的。
-s :安全模式操作
强制以安全模式启动 top,即使是 root 也是如此。此模式通过系统配置文件更好地控制(见主题 6. 文件)。
-S :累积时间切换
启动 top 时,最后记住的 `S` 状态反转。当累积时间模式开启时,每个进程将列出其自身和已终止子进程使用的 CPU 时间。
有关此模式的更多信息,请参见 `S` 交互命令。
-u | -U :用户过滤模式:-u | -U 用户ID或名称
仅显示具有给定用户ID或用户名的进程。`-u` 选项匹配有效用户,而 `-U` 选项匹配任何用户(实际、有效、保存或文件系统)。
在用户ID或名称前加上感叹号(`!`)指示 top 仅显示不匹配提供的用户的进程。
`p`、`u` 和 `U` 命令行选项是互斥的。
-w :输出宽度覆盖:-w [数字]
在批处理模式下,当不带参数使用时,top 将使用设置的 COLUMNS= 和 LINES= 环境变量格式化输出。否则,宽度将固定为最大 512 列。
带参数时,输出宽度可以减少或增加(最多 512),但行数被认为是无限的。
在正常显示模式下,当不带参数使用时,top 将尝试使用设置的 COLUMNS= 和 LINES= 环境变量格式化输出。
带参数时,输出宽度只能减少,不能增加。无论是使用环境变量还是带参数的 -w,当不在批处理模式下时,实际终端尺寸永远不会被超过。
注意:不使用此命令行选项,输出宽度始终基于调用 top 时的终端,无论是否在批处理模式下。
-1 :单/多 CPU 状态切换
启动 top 时,最后记住的 CPU 状态部分的状态反转。要么在一行中显示所有 CPU 信息,要么分别显示每个 CPU,
这取决于 NUMA 节点命令切换('2')的状态。
有关更多信息,请参见 `1` 和 `2` 交互命令。
2. 概要显示
以下三个区域中的每一个都通过一个或多个交互命令单独控制。有关这些规定的更多信息,请参见主题 4b. 概要区域命令。
2a. 系统运行时间和负载平均值
这一部分由单行组成,包含:
程序或窗口名称,取决于显示模式
当前时间和自上次启动以来的运行时间
总用户数
系统在过去 1、5 和 15 分钟内的负载平均值
2b. 任务和 CPU 状态
这一部分至少由两行组成。在多处理器环境中,附加行可以反映单个 CPU 状态百分比。
第1行显示总任务或线程数,取决于线程模式切换的状态。总数进一步分类为:
运行中;睡眠中;停止;僵尸
第2行显示基于上次刷新以来的间隔的 CPU 状态百分比。
默认情况下,以下各类别的百分比将显示。下方显示了新内核版本中的两个标签。
us, 用户 : 运行非优先用户进程的时间
sy, 系统 : 运行内核进程的时间
ni, 优先 : 运行优先用户进程的时间
id, 空闲 : 在内核空闲处理程序中花费的时间
wa, IO等待 : 等待 I/O 完成的时间
hi : 服务硬件中断的时间
si : 服务软件中断的时间
st : 被虚拟机管理程序窃取的时间
在替代 CPU 状态显示模式下,除了第一任务/线程行之外,还会显示一个简短的摘要,包括以下元素:
a b c d
%Cpu(s): 75.0/25.0 100[ ...
其中:a) 是“用户”(us + ni)百分比;b) 是“系统”(sy + hi + si)百分比;c) 是总计;d) 是这些表示的一种视觉图形。
有关此特殊四向切换的更多信息,请参见主题 4b. 概要区域命令和 `t` 命令。
2c. 内存使用
这一部分由两行组成,可以根据 `E` 交互命令强制的缩放因子,以千字节(KiB)到艾字节(EiB)表示值。
默认情况下,第1行反映物理内存,分类为:
总计,空闲,已用和缓冲/缓存
第2行主要反映虚拟内存,分类为:
总计,空闲,已用和可用(即物理内存)
第2行中的 avail 数值是对启动新应用程序的物理内存的估计,无需交换。与 free 字段不同,它试图考虑易回收的页面缓存和内存板条。
在内核 3.14 上可用,在内核 2.6.27+ 上模拟,否则与 free 相同。
在替代内存显示模式下,会显示两行简短的摘要,包括以下元素:
a b c
GiB Mem : 18.7/15.738 [ ...
GiB Swap: 0.0/7.999 [ ...
其中:a) 是已用百分比;b) 是总可用量;c) 是这些表示的一种视觉图形。
对于物理内存,百分比表示总量减去上述估计的 avail。'Mem' 图本身分为已用和未被 avail 考虑的剩余内存。
有关此特殊四向切换的更多信息,请参见主题 4b. 概要区域命令和 `m` 命令。
此表可能有助于解释显示的缩放值:
KiB = 千字节 = 1024 字节
MiB = 兆字节 = 1024 KiB = 1,048,576 字节
GiB = 吉字节 = 1024 MiB = 1,073,741,824 字节
TiB = 太字节 = 1024 GiB = 1,099,511,627,776 字节
PiB = 拍字节 = 1024 TiB = 1,125,899,906,842,624 字节
EiB = 艾字节 = 1024 PiB = 1,152,921,504,606,846,976 字节
3. 字段 / 列显示
3a. 字段描述
下方列出的是 top 可用的进程字段(列)。它们按严格的 ASCII 字母顺序显示。你可以使用 `f` 或 `F`
(字段管理)交互命令自定义它们的位置以及它们是否显示。
任何字段都可以选择作为排序字段,并且你可以控制它们是按高到低还是低到高排序。有关排序规定的更多信息,
请参见主题 4c. 任务区域命令,排序。
与物理内存或虚拟内存相关的字段引用 `(KiB)`,这是未加后缀的显示模式。然而,这些字段可以按 KiB 到 PiB 缩放。
这种缩放受 `e` 交互命令的影响或通过构建选项为启动建立。
1. %CPU -- CPU 使用率
自上次屏幕更新以来任务占用的 CPU 时间份额,以总 CPU 时间的百分比表示。
在真正的 SMP 环境中,如果一个进程是多线程的并且 top 未在线程模式下运行,报告的值可能超过 100%。
你可以使用 `H` 交互命令切换线程模式。
同样对于多处理器环境,如果 Irix 模式关闭,top 将在 Solaris 模式下运行,其中任务的 CPU 使用量将除以 CPU 总数。
你可以使用 `I` 交互命令切换 Irix/Solaris 模式。
注意:当以树状视图模式运行(`V`)且子进程折叠(`v`)时,此字段还将包括那些未见子进程的 CPU 时间。
有关 `V` 和 `v` 切换的更多信息,请参见主题 4c. 任务区域命令,内容。
2. %MEM -- 内存使用率(RES)
任务当前驻留的可用物理内存份额。
有关详细信息,请参见 `概述,Linux 内存类型`。
3. CGNAME -- 控制组名称
进程所属的控制组名称,如果不适用,则为 `-`。
这通常是下一标题(CGROUPS)中显示的控制组列表中的最后一个条目。与此处的情况一样,此字段也是可变宽度的。
4. CGROUPS -- 控制组
进程所属的控制组名称,如果不适用,则为 `-`。
控制组提供在安装定义的进程组之间分配资源(CPU、内存、网络带宽等)的能力。它们使得能够精细控制分配、拒绝、优先级、
管理和监控这些资源。
系统上可以同时存在许多不同层次的控制组,每个层次附加到一个或多个子系统。子系统代表单个资源。
注意:CGROUPS 字段与大多数列不同,不是固定宽度的。当显示时,它加上任何其他可变宽度列将分配所有剩余的屏幕宽度(最多 512 字符)。
即便如此,这些可变宽度字段仍然可能会被截断。有关访问任何被截断数据的更多信息,请参见主题 5c. 窗口滚动。
5. CODE -- 代码大小(KiB)
当前用于可执行代码的物理内存量,也称为文本驻留集大小或 TRS。
有关详细信息,请参见 `概述,Linux 内存类型`。
6. COMMAND -- 命令名称或命令行
显示用于启动任务的命令行或相关程序的名称。你可以使用 `c` 切换命令行和名称,`c` 既是命令行选项也是交互命令。
当你选择显示命令行时,没有命令行的进程(如内核线程)将仅显示程序名称在括号中,如此示例所示:
[kthreadd]
此字段还可能受到树状视图显示模式的影响。有关此模式的更多信息,请参见 `V` 交互命令。
注意:COMMAND 字段与大多数列不同,不是固定宽度的。当显示时,它
加上任何其他可变宽度列将分配所有剩余的屏幕宽度(最多 512 字符)。即便如此,这些可变宽度字段仍然可能会被截断。尤其是当显示命令行时(`c` 交互命令),这种情况尤其明显。有关访问任何被截断数据的更多信息,请参见主题 5c. 窗口滚动。
7. DATA -- 数据 + 堆栈大小(KiB)
进程保留的私有内存量。也称为数据驻留集(DRS)。这种内存可能尚未映射到物理内存(RES),但将始终包含在虚拟内存(VIRT)中。
有关详细信息,请参见 `概述,Linux 内存类型`。
8. ENVIRON -- 环境变量
显示各个进程看到的所有环境变量(如果有)。这些变量将按其原始顺序显示,而不是你习惯于使用未限定 `set` 看到的排序顺序。
注意:ENVIRON 字段与大多数列不同,不是固定宽度的。当显示时,它加上任何其他可变宽度列将分配所有剩余的屏幕宽度(最多 512 字符)。即便如此,这些可变宽度字段仍然可能会被截断。此字段尤其如此。有关访问任何被截断数据的更多信息,请参见主题 5c. 窗口滚动。
9. Flags -- 任务标志
此列表示任务的当前调度标志,以十六进制表示,并且零被抑制。这些标志在 <linux/sched.h> 中有官方文档。
10. GID -- 组 ID
有效组 ID。
11. GROUP -- 组名称
有效组名称。
12. LXC -- LXC 容器名称
任务运行所在的 LXC 容器的名称。如果进程未在容器内运行,则显示破折号 (`-`)。
13. NI -- 优先值
任务的优先值。负优先值表示更高优先级,而正优先值表示较低优先级。此字段中的零仅表示在确定任务的调度优先级时不会调整优先级。
14. NU -- 最后已知的 NUMA 节点
一个数字,表示与上次使用的处理器(`P`)关联的 NUMA 节点。当显示 -1 时,表示 NUMA 信息不可用。
有关 NUMA 功能的更多信息,请参见 `2` 和 `3` 交互命令,这些命令影响摘要区域。
15. OOMa -- 内存不足调整因子
值的范围从 -1000 到 +1000,添加到当前内存不足得分(OOMs),然后用于确定在内存耗尽时要杀死哪个任务。
16. OOMs -- 内存不足得分
值的范围从 0 到 +1000,用于选择在内存耗尽时要杀死的任务。零表示“从不杀”,而 1000 表示“总是杀”。
17. P -- 最后使用的 CPU(SMP)
一个数字,表示最后使用的处理器。在真正的 SMP 环境中,这个值可能会频繁变化,因为内核故意使用弱亲和性。同样,运行 top 的行为可能会打破这种弱亲和性,并导致更多的进程更频繁地更换 CPU(由于对 CPU 时间的额外需求)。
18. PGRP -- 进程组 ID
每个进程都是一个唯一进程组的成员,该组用于分配信号和终端以仲裁其输入和输出请求。创建进程(分叉)时,它成为其父进程组的成员。按照惯例,此值等于进程组的第一个成员的进程 ID(见 PID),称为进程组领导。
19. PID -- 进程 ID
任务的唯一进程 ID,周期性地循环,但从不重新启动为零。在内核术语中,它是由 task_struct 定义的可调度实体。
此值还可以用作:进程组 ID(见 PGRP);会话 ID(见 SID);线程组 ID(见 TGID);和 TTY 进程组 ID(见 TPGID)。
20. PPID -- 父进程 ID
任务的父进程 ID(pid)。
21. PR -- 优先级
任务的调度优先级。如果在此字段中看到 `rt`,则表示任务在实时调度优先级下运行。
在 Linux 中,实时优先级有点误导性,因为传统上操作本身不可抢占。虽然 2.6 内核可以变得大部分可抢占,但并不总是这样。
22. RES -- 驻留内存大小(KiB)
虚拟地址空间(VIRT)的一个子集,表示任务当前使用的未交换物理内存。它也是 RSan、RSfd 和 RSsh 字段的总和。
它可以包含私有匿名页面、映射到文件的私有页面(包括程序映像和共享库)以及共享匿名页面。所有这些内存都由 SWAP 单独表示的交换文件支持。
最后,此字段还可能包含修改过的共享文件支持页面,这些页面充当专用交换文件,因此永远不会影响 SWAP。
有关详细信息,请参见 `概述,Linux 内存类型`。
23. RSan -- 驻留匿名内存大小(KiB)
驻留内存(RES)的一个子集,表示未映射到文件的私有页面。
24. RSfd -- 驻留文件支持内存大小(KiB)
驻留内存(RES)的一个子集,表示隐式共享的程序映像和共享库页面。它还包括显式文件映射,无论是私有还是共享。
25. RSlk -- 驻留锁定内存大小(KiB)
驻留内存(RES)的一个子集,不能被交换出去。
26. RSsh -- 驻留共享内存大小(KiB)
驻留内存(RES)的一个子集,表示显式共享的匿名 shm*/mmap 页面。
27. RUID -- 实际用户 ID
实际用户 ID。
28. RUSER -- 实际用户名
实际用户名。
29. S -- 进程状态
任务的状态,可以是以下之一:
D = 不可中断的睡眠
I = 空闲
R = 运行
S = 睡眠
T = 被作业控制信号停止
t = 在跟踪期间被调试器停止
Z = 僵尸
显示为运行的任务应更恰当地视为准备运行 -- 它们的 task_struct 仅在 Linux 运行队列中表示。即使没有真正的 SMP 机器,
你可能会看到许多任务处于此状态,具体取决于 top 的延迟间隔和优先值。
30. SHR -- 共享内存大小(KiB)
驻留内存(RES)的一个子集,可能被其他进程使用。它将包括共享匿名页面和共享文件支持页面。它还包括表示程序映像和共享库的私有页面。
有关详细信息,请参见 `概述,Linux 内存类型`。
31. SID -- 会话 ID
会话是进程组(见 PGRP)的集合,通常由登录 shell 建立。新分叉的进程加入创建者的会话。按照惯例,
此值等于会话的第一个成员的进程 ID(见 PID),称为会话领导,通常是登录 shell。
32. SUID -- 保存的用户 ID
保存的用户 ID。
33. SUPGIDS -- 补充组 ID
在登录时或从任务的父进程继承的任何补充组 ID。它们以逗号分隔的列表显示。
注意:SUPGIDS 字段与大多数列不同,不是固定宽度的。当显示时,它加上任何其他可变宽度列将分配所有剩余的屏幕宽度(最多 512 字符)。
即便如此,这些可变宽度字段仍然可能会被截断。有关访问任何被截断数据的更多信息,请参见主题 5c. 窗口滚动。
34. SUPGRPS --
SUPGRPS -- 补充组名
在登录时或从任务的父进程继承的任何补充组名。它们以逗号分隔的列表显示。
注意:SUPGRPS 字段与大多数列不同,不是固定宽度的。当显示时,它加上任何其他可变宽度列将分配所有剩余的屏幕宽度(最多 512 字符)。
即便如此,这些可变宽度字段仍然可能会被截断。有关访问任何被截断数据的更多信息,请参见主题 5c. 窗口滚动。
35. SUSER -- 保存的用户名
保存的用户名。
36. SWAP -- 交换大小(KiB)
当物理内存过度承诺时写入交换文件的任务地址空间中以前驻留的部分。
有关详细信息,请参见 `概述,Linux 内存类型`。
37. TGID -- 线程组 ID
任务所属的线程组的 ID。它是线程组领导的 PID。在内核术语中,它表示那些共享 mm_struct 的任务。
38. TIME -- CPU 时间
任务自启动以来使用的总 CPU 时间。当累积模式开启时,每个进程将列出其自身及其已终止的子进程使用的 CPU 时间。
你可以使用 `S` 切换累积模式,`S` 既是命令行选项也是交互命令。有关此模式的更多信息,请参见 `S` 交互命令。
39. TIME+ -- CPU 时间,以百分之一秒为单位
与 TIME 相同,但反映更多粒度,通过百分之一秒。
40. TPGID -- TTY 进程组 ID
连接的 TTY 的前台进程的进程组 ID,如果进程未连接到终端,则为 -1。按照惯例,此值等于进程组领导的进程 ID(见 PGRP)。
41. TTY -- 控制终端
控制终端的名称。这通常是任务启动时使用的设备(串行端口、虚拟终端等),并用于输入或输出。然而,任务不必与终端关联,
在这种情况下,你会看到显示 `?`。
42. UID -- 用户 ID
任务所有者的有效用户 ID。
43. USED -- 使用中的内存(KiB)
此字段表示任务使用的未交换物理内存(RES)加上其地址空间中交换出的部分(SWAP)。
有关详细信息,请参见 `概述,Linux 内存类型`。
44. USER -- 用户名
任务所有者的有效用户名。
45. VIRT -- 虚拟内存大小(KiB)
任务使用的虚拟内存总量。它包括所有代码、数据和共享库,加上已交换出的页面和已映射但未使用的页面。
有关详细信息,请参见 `概述,Linux 内存类型`。
46. WCHAN -- 休眠中的函数
此字段将显示任务当前休眠的内核函数的名称。运行中的任务将在此列中显示破折号 (`-`)。
47. nDRT -- 脏页数
自上次写入辅助存储以来已修改的页面数。脏页必须写入辅助存储,然后相应的物理内存位置才能用于其他虚拟页面。
此字段在 linux 2.6 版本中被弃用,总是为零。
48. nMaj -- 主页面错误数
任务发生的主页面错误数。当进程尝试从其地址空间当前不存在的虚拟页面读取或写入时,会发生页面错误。
主页面错误是指涉及辅助存储访问以使该页面可用的错误。
49. nMin -- 次页面错误数
任务发生的次页面错误数。当进程尝试从其地址空间当前不存在的虚拟页面读取或写入时,会发生页面错误。
次页面错误不涉及辅助存储访问以使该页面可用。
50. nTH -- 线程数
与进程关联的线程数。
51. nsIPC -- IPC 命名空间
用于隔离进程间通信(IPC)资源(如 System V IPC 对象和 POSIX 消息队列)的命名空间的 Inode。
52. nsMNT -- 挂载命名空间
用于隔离文件系统挂载点的命名空间的 Inode,从而提供文件系统层次结构的不同视图。
53. nsNET -- 网络命名空间
用于隔离资源(如网络设备、IP 地址、IP 路由、端口号等)的命名空间的 Inode。
54. nsPID -- PID 命名空间
用于隔离进程 ID 号的命名空间的 Inode,这意味着它们不必保持唯一。因此,每个这样的命名空间可以有自己的 `init/systemd`
(PID #1)来管理各种初始化任务和收养孤儿子进程。
55. nsUSER -- 用户命名空间
用于隔离用户和组 ID 号的命名空间的 Inode。因此,进程在用户命名空间之外可以有正常的非特权用户 ID,
而在该命名空间内具有 0 的用户 ID,具有完全的 root 权限。
56. nsUTS -- UTS 命名空间
用于隔离主机名和 NIS 域名的命名空间的 Inode。UTS 简单地表示“UNIX 共享系统”。
57. vMj -- 主页面错误数增量
自上次更新以来发生的主页面错误数(见 nMaj)。
58. vMn -- 次页面错误数增量
自上次更新以来发生的次页面错误数(见 nMin)。
3b. 管理字段
按下交互命令 `f` 或 `F` 后,你将看到一个屏幕,显示:1)“当前”窗口名称;2)指定的排序字段;3)当前顺序显示的所有字段以及描述。
标有星号的条目是当前显示的字段,屏幕宽度允许。
• 如屏幕上的说明所示,你可以使用上下箭头键在字段之间导航。PgUp、PgDn、Home 和 End 键也可以快速到达第一个或最后一个可用字段。
• 右箭头键选择一个字段进行重新定位,左箭头键或 <Enter> 键确认该字段的位置。
• `d` 键或 <Space> 键切换字段的显示状态,因此是否显示星号。
• `s` 键指定一个字段为排序字段。有关选择排序字段的更多信息,请参见主题 4c. 任务区域命令,排序。
• `a` 和 `w` 键可以用于循环所有可用窗口,`q` 或 <Esc> 键退出字段管理。
字段管理屏幕还可以用于在全屏模式或替代显示模式下更改“当前”窗口/字段组。返回 top 显示时,按 `q` 或 <Esc> 键时目标窗口将被设为当前窗口。
有关“当前”窗口和字段组的更多信息,请参见主题 5. 替代显示选项和 `g` 交互命令。
注意:如果通过字段管理屏幕进行的任何字段更改,任何已水平滚动的窗口将被重置。然而,任何垂直滚动的位置将不会受到影响。
有关垂直和水平滚动的更多信息,请参见主题 5c. 窗口滚动。
4. 交互命令
以下是命令的简要索引,按类别分类。有些命令出现不止一次——它们的含义或范围可能会根据发出命令的上下文而有所不同。
4a. 全局命令
<Ent/Sp> ?, =, 0,
A, B, d, E, e, g, h, H, I, k, q, r, s, W, X, Y, Z
4b. 摘要区域命令
C, l, t, m, 1, 2, 3, 4, !
4c. 任务区域命令
外观: b, J, j, x, y, z
内容: c, f, F, o, O, S, u, U, V, v
大小: #, i, n
排序: <, >, f, F, R
4d. 颜色映射
<Ret>, a, B, b, H, M, q, S, T, w, z, 0 - 7
5b. 窗口命令
-, _, =, +, A, a, g, G, w
5c. 窗口滚动
C, Up, Dn, Left, Right, PgUp, PgDn, Home, End
5d. 窗口搜索
L, &
4a. 全局命令
全屏模式和替代显示模式下始终可用全局交互命令。然而,在安全模式下,某些交互命令不可用。
如果你想提前知道你的 top 是否已被安全,请请求帮助并查看第二行上的系统摘要。
<Enter> 或 <Space> :刷新显示
这些命令唤醒 top,并在收到任何输入后重新绘制整个显示。它们还强制更新任何热插拔的 CPU 或物理内存变化。
如果你有一个较大的延迟间隔,并希望查看当前状态,请使用其中任何一个键,
? | h :帮助
有两个帮助级别可用。第一个将提供所有基本交互命令的提醒。如果 top 被保护,该屏幕将被缩短。
在该帮助屏幕上键入 `h` 或 `?` 将带你进入适用于替代显示模式的交互命令的帮助。
= :退出显示限制
删除显示内容的限制。此命令将反转任何 `i`(空闲任务)、`n`(最大任务)和 `v`(隐藏子进程)命令。
它还提供退出 PID 监控、用户过滤、其他过滤、定位处理和组合 CPU 模式。
此外,如果窗口已滚动,将使用此命令重置。
0 :零抑制切换
此命令确定是否显示许多字段中的零。像 UID、GID、NI、PR 或 P 等字段不受此切换的影响。
A :替代显示模式切换
此命令将在全屏模式和替代显示模式之间切换。请参见主题 5. 替代显示选项和 `g` 交互命令,
了解“当前”窗口和字段组的详细信息。
B :加粗禁用/启用切换
此命令将影响粗体 terminfo 功能的使用,并改变“当前”窗口的摘要区域和任务区域。虽然主要用于哑终端,
但可以随时应用。
注意:当此切换开启且 top 在单色模式下运行时,整个显示将显示为普通文本。因此,除非 `x` 和/或 `y`
切换使用反转以强调,否则将没有视觉确认它们是否开启。
* d | s :更改延迟时间间隔
你将被提示输入显示更新之间的延迟时间(以秒为单位)。
分数秒是有效的,但不允许负数。输入 0 会导致(几乎)连续更新,因为系统和 tty 驱动程序尝试跟上 top 的需求,显示将不满意。
延迟值与系统负载成反比,因此请谨慎设置。
如果你想随时知道当前的延迟时间,只需请求帮助并查看第二行上的系统摘要。
E :强制摘要内存缩放
使用此命令可以循环摘要区域的内存缩放,范围从 KiB(千字节或 1024 字节)到 EiB(艾字节或 1,152,921,504,606,846,976 字节)。
如果你在显示的数字和后面的标签之间看到一个 `+`,这意味着 top 被迫截断了该数字的一部分。通过提高缩放因子,可以避免这种截断。
e :强制任务内存缩放
使用此命令可以循环任务区域的内存缩放,范围从 KiB(千字节或 1024 字节)到 PiB(拍字节或 1,125,899,906,842,624 字节)。
虽然 top 将尽力遵守选定的目标范围,但为了适应当前值,可能仍需要额外的缩放。如果你希望在内存列中看到更均匀的结果,提高缩放范围通常可以实现该目标。
但如果提高过高,可能会产生全零结果,无法使用 `0` 交互命令抑制。
g :选择其他窗口/字段组
你将被提示输入一个介于 1 和 4 之间的数字,以指定应作为“当前”窗口的字段组。随着你对这 4 个窗口的熟悉,
特别是在尝试替代显示模式后,你会很快熟悉这些窗口。
H :线程模式切换
当此切换开启时,将显示所有进程的单个线程。否则,top 显示每个进程中所有线程的汇总。
I :Irix/Solaris 模式切换
当在 Solaris 模式下运行时(`I` 切换关闭),任务的 CPU 使用量将除以 CPU 总数。发出此命令后,你将被告知此切换的新状态。
* k :杀死任务
你将被提示输入一个 PID,然后是要发送的信号。
不输入 PID 或输入负数将被解释为提示中显示的默认值(显示的第一个任务)。PID 值为零表示 top 程序本身。
默认信号如提示中所示是 SIGTERM。然而,你可以通过数字或名称发送任何信号。
如果你希望中止杀死进程的操作,请根据进度执行以下操作之一:
1) 在 PID 提示中,键入无效数字
2) 在信号提示中,键入 0(或任何无效信号)
3) 在任何提示中,键入 <Esc>
q :退出
* r :调整任务优先级
你将被提示输入一个 PID,然后是要调整的优先值。
不输入 PID 或输入负数将被解释为提示中显示的默认值(显示的第一个任务)。PID 值为零表示 top 程序本身。
正的优先值将使进程降低优先级。相反,负的优先值将使进程更受内核青睐。一般来说,普通用户只能增加优先值,无法降低。
如果你希望中止调整优先级的操作,请根据进度执行以下操作之一:
1) 在 PID 提示中,键入无效数字
2) 在优先值提示中,按 <Enter> 键不输入任何内容
3) 在任何提示中,键入 <Esc>
W :写入配置文件
这将保存所有选项和切换加上当前显示模式和延迟时间。通过在退出 top 之前发出此命令,你将能够在完全相同的状态下重新启动。
X :额外固定宽度
某些字段是固定宽度的,不可缩放。因此,它们可能会被截断,表示为最后一个位置的 `+`。
此交互命令可用于更改以下字段的宽度:
字段 默认 字段 默认 字段 默认
GID 5 GROUP 8 WCHAN 10
RUID 5 LXC 8 nsIPC 10
SUID 5 RUSER 8 nsMNT 10
UID 5 SUSER 8 nsNET 10
TTY 8 nsPID 10
USER 8 nsUSER 10
nsUTS 10
你将被提示输入要
更改的字段名。可以提供任何有效的固定宽度字段名称,或键入 <Esc> 退出此命令。你将被提示输入一个介于 1 和 40 之间的数字。该数字决定新宽度,并立即应用。
Y :其他过滤
使用此命令可以轻松对任务进行临时过滤。
你将被提示输入一个字段名(例如,'COMMAND')。如果字段名无效,当前窗口的所有字段名将作为上下文提示进行显示。
输入字段名后,你将被提示输入一个值。该值将与字段的内容进行比较,只有那些匹配的任务才会被显示。
有关此命令的更多信息,请参见 `&` 交互命令和主题 5e. 窗口搜索。
Z :颜色映射开关
你将被提示选择一个颜色映射。如果禁用颜色映射,将不会显示任何颜色。
可以使用 0 到 7 之间的数字选择颜色映射。相关提示将显示当前使用的颜色映射和可用的颜色映射。
有关此命令的更多信息,请参见主题 4d. 颜色映射。
4b. 摘要区域命令
摘要区域命令只影响窗口的摘要部分。它们在全屏模式和替代显示模式下均可用。
C :用户和组 ID 切换
此命令将影响任务区域中显示的用户和组 ID。默认情况下,top 显示任务的用户名和组名。此切换将它们切换为实际 ID。
l :负载平均值和系统运行时间切换
此命令将隐藏或显示显示窗口顶部的负载平均值和系统运行时间。
t :任务和 CPU 状态切换
此命令将隐藏或显示显示窗口顶部的任务和 CPU 状态。
m :内存状态切换
此命令将隐藏或显示显示窗口顶部的内存状态。
1 :单/多 CPU 状态切换
此命令将单个 CPU 的状态显示切换为所有 CPU 的状态显示,反之亦然。
2 :NUMA 节点切换
当此切换开启时,每个 CPU 状态行的显示顺序将遵循 NUMA 节点的顺序。此顺序在 NUMA 机器上可能会有所不同。
3 :NUMA 节点颜色映射切换
当此切换开启时,每个 CPU 状态行将使用不同的颜色映射,以便更容易区分。
4 :NUMA 节点布局切换
当此切换开启时,CPU 状态行将根据 NUMA 节点进行分组和显示。
! :交互命令取消
此命令将取消任何未完成的交互命令,并返回到正常的 top 操作。
4c. 任务区域命令
任务区域命令只影响窗口的任务显示部分。它们在全屏模式和替代显示模式下均可用。
外观:
b :粗体切换
此命令将影响粗体 terminfo 功能的使用,并改变任务区域的显示。
J :列移动
此命令将当前选择的列移动到下一个位置。
j :列移动
此命令将当前选择的列移动到上一个位置。
x :当前排序字段突出显示切换
此命令将突出显示当前用于排序的字段。
y :任务窗口行突出显示切换
此命令将突出显示任务窗口中的每一行。
z :任务窗口颜色映射切换
此命令将任务窗口切换为使用不同的颜色映射。
内容:
c :命令行/程序名称切换
此命令将任务的命令行显示切换为程序名称,反之亦然。
f :字段管理
此命令将进入字段管理屏幕,允许你选择哪些字段显示,哪些字段用于排序。
F :字段管理
此命令将进入字段管理屏幕,允许你选择哪些字段显示,哪些字段用于排序。
o :排序字段选择
此命令将进入排序字段选择屏幕,允许你选择用于排序的字段。
O :排序字段选择
此命令将进入排序字段选择屏幕,允许你选择用于排序的字段。
S :累积时间切换
此命令将任务的累积时间显示切换为非累积时间,反之亦然。
u :用户过滤
此命令将任务显示过滤为特定用户。
U :用户过滤
此命令将任务显示过滤为特定用户。
V :树状视图切换
此命令将任务显示切换为树状视图,显示任务的父子关系。
v :子进程隐藏切换
此命令将隐藏或显示任务的子进程。
大小:
# :任务数量限制
此命令将限制显示的任务数量。
i :空闲任务切换
此命令将隐藏或显示空闲任务。
n :任务数量限制
此命令将限制显示的任务数量。
排序:
< :反向排序
此命令将当前排序字段的排序顺序反转。
> :反向排序
此命令将当前排序字段的排序顺序反转。
f :字段管理
此命令将进入字段管理屏幕,允许你选择用于排序的字段。
F :字段管理
此命令将进入字段管理屏幕,允许你选择用于排序的字段。
R :默认排序恢复
此命令将排序恢复为默认排序字段和顺序。
4d. 颜色映射
颜色映射命令只在颜色映射模式下可用。有关更多信息,请参见 `Z` 交互命令和 `z` 交互命令。
<Ret> :颜色映射选择
你将被提示选择一个颜色映射。可以使用 0 到 7 之间的数字选择颜色映射。相关提示将显示当前使用的颜色映射和可用的颜色映射。
a :颜色 A
选择颜色映射 A。
B :颜色 B
选择颜色映射 B。
b :颜色 B
选择颜色映射 B。
H :高亮颜色
选择高亮颜色。
M :普通颜色
选择普通颜色。
q :退出颜色映射
退出颜色映射选择。
S :保存颜色映射
保存当前的颜色映射设置。
T :切换颜色映射
切换颜色映射。
w :写入配置文件
将当前颜色映射设置写入配置文件。
z :切换颜色映射
切换颜色映射。
0 - 7 :颜色映射选择
你将被提示选择一个颜色映射。可以使用 0 到 7 之间的数字选择颜色映射。相关提示将显示当前使用的颜色映射和可用的颜色映射。
5. 替代显示选项
5a. 窗口概述
在替代显示模式下,top 提供了额外的窗口,用于展示不同的任务和系统信息。你可以使用 `A` 交互命令切换到替代显示模式。
每个窗口都可以单独配置,显示不同的字段和排序顺序。
默认情况下,替代显示模式提供四个窗口。你可以使用 `g` 交互命令选择要查看的窗口。每个窗口都有自己的字段组和排序顺序,
允许你定制每个窗口显示的信息。
5b. 窗口命令
以下命令在替代显示模式下可用,用于管理窗口:
- :减小窗口宽度
减小当前窗口的宽度。
_ :减小窗口宽度
减小当前窗口的宽度。
= :重置窗口大小
重置当前窗口的宽度。
+ :增加窗口宽度
增加当前窗口的宽度。
A :替代显示模式切换
切换到替代显示模式。
a :窗口添加
添加一个新窗口。
g :选择窗口
选择要查看的窗口。
G :窗口删除
删除当前窗口。
w :写入配置文件
将当前窗口配置写入配置文件。
5c. 窗口滚动
以下命令在替代显示模式下可用,用于滚动窗口内容:
C
C : 光标控制切换
此命令将启用或禁用光标控制功能,以便在窗口内容上进行导航。
Up : 向上滚动
将窗口内容向上滚动一行。
Dn : 向下滚动
将窗口内容向下滚动一行。
Left : 向左滚动
将窗口内容向左滚动一列。
Right : 向右滚动
将窗口内容向右滚动一列。
PgUp : 向上翻页
将窗口内容向上滚动一页。
PgDn : 向下翻页
将窗口内容向下滚动一页。
Home : 跳到开头
将窗口内容跳到开头。
End : 跳到结尾
将窗口内容跳到结尾。
5d. 窗口搜索
以下命令在替代显示模式下可用,用于在窗口内容中搜索:
L : 关键字搜索
你将被提示输入一个关键字,用于在窗口内容中搜索匹配项。
& : 字段过滤
你将被提示输入一个字段名和一个值,以便仅显示匹配该字段值的任务。
5e. 窗口过滤
使用 `&` 交互命令可以对窗口内容进行过滤。你将被提示输入一个字段名(例如,'COMMAND')。如果字段名无效,当前窗口的所有字段名将作为上下文提示进行显示。输入字段名后,你将被提示输入一个值。该值将与字段的内容进行比较,只有那些匹配的任务才会被显示。
你可以在过滤器值前添加一个感叹号(`!`)以排除该值匹配的任务。还可以使用通配符 `*` 和 `?` 进行匹配。
在提示输入行并以 <Enter> 键终止的情况下,上键和下键具有特殊意义。那些键或其别名可用于检索以前的输入行,然后可以编辑并重新输入。以下是一些键的特殊意义:
上键 : 回忆旧字符串以重新编辑
下键 : 回忆新字符串或删除整行
Insert : 在插入和覆盖模式之间切换
Delete : 删除光标位置的字符,移动其他字符向左
Home : 跳至输入行的开头
End : 跳至输入行的末尾
6. 文件
6a. 个人配置文件
top 提供了一个配置文件来保存你对 top 界面和行为的所有自定义设置。配置文件通常位于用户的主目录中,名为 `.toprc`。
配置文件包含的设置包括:字段和排序、摘要区域设置、延迟时间、颜色映射等。你可以通过 `W` 交互命令将当前配置写入配置文件。
6b. 添加检查条目
你可以通过在配置文件中添加检查条目来监控特定进程或系统状态。检查条目定义了条件,当这些条件满足时,top 将发出警告或执行操作。
每个检查条目包含以下字段:
- 名称
- 条件表达式
- 动作
- 优先级
你可以使用 `E` 命令添加新的检查条目,或编辑现有的检查条目。
6c. 系统配置文件
系统配置文件位于 `/etc/toprc`,用于定义系统范围的 top 设置。系统配置文件的语法与个人配置文件相同,但优先级较低。
6d. 系统限制文件
系统限制文件位于 `/etc/toplim`,用于定义对 top 操作的限制。这些限制包括:最大任务数、最大字段数、最大内存使用等。
系统限制文件中的设置将覆盖用户的个人配置文件中的设置。
7. 一些奇妙的技巧
7a. 内核魔术
你可以使用 top 的交互命令来查看和操作内核参数。例如,使用 `k` 命令可以杀死任务,使用 `r` 命令可以调整任务的优先级。
7b. 窗口弹跳
在替代显示模式下,你可以使用 `a` 命令添加新窗口,并通过 `g` 命令在窗口之间切换。这样可以同时监控多个进程和系统状态。
7c. 大鸟窗口
使用 top 的颜色映射功能,你可以将重要的任务或状态突出显示为不同的颜色。这样可以在大量信息中快速识别关键数据。
7d. 交换窗口
使用 top 的窗口功能,你可以创建多个窗口,分别显示不同的信息。然后,可以使用 `G` 命令删除不需要的窗口,或使用 `A` 命令切换显示模式。
8. 错误
如果你在使用 top 时遇到任何问题,请参阅 top 的手册页或在线文档获取帮助。
9. 参见
有关 top 的更多信息,请参阅以下资源:
- man 页:man top
- 在线文档:https://man7.org/linux/man-pages/man1/top.1.html
4b. 摘要区域命令
摘要区域命令仅影响窗口的摘要部分,它们在全屏模式和替代显示模式下均可用。
C : CPU使用率切换
此命令将隐藏或显示显示窗口顶部的CPU使用率。
l : 负载平均值和系统运行时间切换
此命令将隐藏或显示显示窗口顶部的负载平均值和系统运行时间。
t : 任务和CPU状态切换
此命令将隐藏或显示显示窗口顶部的任务和CPU状态。
m : 内存状态切换
此命令将隐藏或显示显示窗口顶部的内存状态。
1 : 单/多CPU状态切换
此命令将单个CPU的状态显示切换为所有CPU的状态显示,反之亦然。
2 : NUMA节点切换
当此切换开启时,每个CPU状态行的显示顺序将遵循NUMA节点的顺序。此顺序在NUMA机器上可能会有所不同。
3 : NUMA节点颜色映射切换
当此切换开启时,每个CPU状态行将使用不同的颜色映射,以便更容易区分。
4 : NUMA节点布局切换
当此切换开启时,CPU状态行将根据NUMA节点进行分组和显示。
! : 交互命令取消
此命令将取消任何未完成的交互命令,并返回到正常的top操作。
4c. 任务区域命令
任务区域命令仅影响窗口的任务显示部分。它们在全屏模式和替代显示模式下均可用。
外观:
b : 粗体切换
此命令将影响粗体terminfo功能的使用,并改变任务区域的显示。
J : 列移动
此命令将当前选择的列移动到下一个位置。
j : 列移动
此命令将当前选择的列移动到上一个位置。
x : 当前排序字段突出显示切换
此命令将突出显示当前用于排序的字段。
y : 任务窗口行突出显示切换
此命令将突出显示任务窗口中的每一行。
z : 任务窗口颜色映射切换
此命令将任务窗口切换为使用不同的颜色映射。
内容:
c : 命令行/程序名称切换
此命令将任务的命令行显示切换为程序名称,反之亦然。
f : 字段管理
此命令将进入字段管理屏幕,允许你选择哪些字段显示,哪些字段用于排序。
F : 字段管理
此命令将进入字段管理屏幕,允许你选择哪些字段显示,哪些字段用于排序。
o : 排序字段选择
此命令将进入排序字段选择屏幕,允许你选择用于排序的字段。
O : 排序字段选择
此命令将进入排序字段选择屏幕,允许你选择用于排序的字段。
S : 累积时间切换
此命令将任务的累积时间显示切换为非累积时间,反之亦然。
u : 用户过滤
此命令将任务显示过滤为特定用户。
U : 用户过滤
此命令将任务显示过滤为特定用户。
V : 树状视图切换
此命令将任务显示切换为树状视图,显示任务的父子关系。
v : 子进程隐藏切换
此命令将隐藏或显示任务的子进程。
大小:
# : 任务数量限制
此命令将限制显示的任务数量。
i : 空闲任务切换
此命令将隐藏或显示空闲任务。
n : 任务数量限制
此命令将限制显示的任务数量。
排序:
< : 反向排序
此命令将当前排序字段的排序顺序反转。
> : 反向排序
此命令将当前排序字段的排序顺序反转。
f : 字段管理
此命令将进入字段管理屏幕,允许你选择用于排序的字段。
F : 字段管理
此命令将进入字段管理屏幕,允许你选择用于排序的字段。
R : 默认排序恢复
此命令将排序恢复为默认排序字段和顺序。
4d. 颜色映射
颜色映射命令仅在颜色映射模式下可用。有关更多信息,请参见 `Z` 交互命令和 `z` 交互命令。
<Ret> : 颜色映射选择
你将被提示选择一个颜色映射。可以使用0到7之间的数字选择颜色映射。相关提示将显示当前使用的颜色映射和可用的颜色映射。
a : 颜色A
选择颜色映射A。
B : 颜色B
选择颜色映射B。
b : 颜色B
选择颜色映射B。
H : 高亮颜色
选择高亮颜色。
M : 普通颜色
选择普通颜色。
q : 退出颜色映射
退出颜色映射选择。
S : 保存颜色映射
保存当前的颜色映射设置。
T : 切换颜色映射
切换颜色映射。
w : 写入配置文件
将当前颜色映射设置写入配置文件。
z : 切换颜色映射
切换颜色映射。
0 - 7 : 颜色映射选择
你将被提示选择一个颜色映射。可以使用0到7之间的数字选择颜色映射。相关提示将显示当前使用的颜色映射和可用的颜色映射。
5. 替代显示选项
5a. 窗口概述
在替代显示模式下,top提供了额外的窗口,用于展示不同的任务和系统信息。你可以使用`A`交互命令切换到替代显示模式。每个窗口都可以单独配置,显示不同的字段和排序顺序。
默认情况下,替代显示模式提供四个窗口。你可以使用`g`交互命令选择要查看的窗口。每个窗口都有自己的字段组和排序顺序,允许你定制每个窗口显示的信息。
5b. 窗口命令
以下命令在替代显示模式下可用,用于管理窗口:
- : 减小窗口宽度
减小当前窗口的宽度。
_ : 减小窗口宽度
减小当前窗口的宽度。
= : 重置窗口大小
重置当前窗口的宽度。
+ : 增加窗口宽度
增加当前窗口的宽度。
A : 替代显示模式切换
切换到替代显示模式。
a : 窗口添加
添加一个新窗口。
g : 选择窗口
选择要查看的窗口。
G : 窗口删除
删除当前窗口。
w : 写入配置文件
将当前窗口配置写入配置文件。
5c. 窗口滚动
以下命令在替代显示模式下可用,用于滚动窗口内容:
C : 光标控制切换
此命令将启用或禁用光标控制功能,以便在窗口内容上进行导航。
Up : 向上滚动
将窗口内容向上滚动一行。
Dn : 向下滚动
将窗口内容向下滚动一行。
Left : 向左滚动
将窗口内容向左滚动一列。
Right : 向右滚动
将窗口内容向右滚动一列。
PgUp : 向上翻页
将窗口内容向上滚动一页。
PgDn : 向下翻页
将窗口内容向下滚动一页。
Home : 跳到开头
将窗口内容跳到开头。
End : 跳到结尾
将窗口内容跳到结尾。
5d. 窗口搜索
以下命令在替代显示模式下可用,用于在窗口内容中搜索:
L : 关键字搜索
你将被提示输入一个关键字,用于在窗口内容中搜索匹配项。
& : 字段过滤
你将被提示输入一个字段名和一个值,以便仅显示匹配该字段值的任务。
6. 文件
6a. 个人配置文件
top 提供了一个配置文件来保存你对 top 界面和行为的所有自定义设置。配置文件通常位于用户的主目录中,名为 `.toprc`。
配置文件包含的设置包括:字段和排序、摘要区域设置、延迟时间、颜色映射等。你可以通过 `W` 交互命令将当前配置写入配置文件。
6b. 添加检查条目
你可以通过在配置文件中添加检查条目来监控特定进程或系统状态。检查条目定义了条件,当这些条件满足时,top 将发出警告或执行操作。
每个检查条目包含以下字段:
- 名称
- 条件表达式
- 动作
- 优先级
你可以使用 `E` 命令添加新的检查条目,或编辑现有的检查条目。
6c. 系统配置文件
系统配置文件位于 `/etc/toprc`,用于定义系统范围的 top 设置。系统配置文件的语法与个人配置文件相同,但优先级较低。
6d. 系统限制文件
系统限制文件位于 `/etc/toplim`,用于定义对 top 操作的限制。这些限制包括:最大任务数、最大字段数、最大内存使用等。
系统限制文件中的设置将覆盖用户的个人配置文件中的设置。
7. 一些奇妙的技巧
7a. 内核魔术
你可以使用 top 的交互命令来查看和操作内核参数。例如,使用 `k` 命令可以杀死任务,使用 `r` 命令可以调整任务的优先级。
7b. 窗口弹跳
在替代显示模式下,你可以使用 `a` 命令添加新窗口,并通过 `g` 命令在窗口之间切换。这样可以同时监控多个进程和系统状态。
7c. 大鸟窗口
使用 top 的颜色映射功能,你可以将重要的任务或状态突出显示为不同的颜色。这样可以在大量信息中快速识别关键数据。
7d. 交换窗口
使用 top 的窗口功能,你可以创建多个窗口,分别显示不同的信息。然后,可以使用 `G` 命令删除不需要的窗口,或使用 `A` 命令切换显示模式。
8. 错误
如果你在使用 top 时遇到任何问题,请参阅 top 的手册页或在线文档获取帮助。
9. 参见
有关 top 的更多信息,请参阅以下资源:
- man 页:man top
- 在线文档:https://man7.org/linux/man-pages/man1/top.1.html