如何使用Linux top命令(并了解其输出)
Linux的" top"命令是类Unix操作系统的坚强后盾之一。它的实用性显示中包含有关系统运行进程和资源使用情况的有用信息。但是,我们知道它还支持颜色,突出显示甚至基本图形吗?
信息密集的仪表板
" top"命令自1984年以来一直存在,并且有许多变体。对于本文,我们将运行已应用所有补丁的Ubuntu 18.04,以及" top"的3.3.12版本。我们还交叉引用了其他两台测试计算机上的所有内容,其中一台运行Fedora,另一台运行Manjaro。
默认的"顶部"显示会在终端窗口中填充尽可能多的信息。信息是管理的准备工作,所以这是一件好事。优秀的系统管理员的特征之一是能够发现新出现的问题,并在它们影响服务之前进行处理。
最好将显示描述为实用的,而不是直观的,并且缩写很多。当我们初次遇到" top"时,会感到局促,隐秘且令人讨厌。但是,只需按下几下按键,我们就可以根据对我们重要的内容来调整显示的内容和格式。
检查top版本
要检查我们拥有的top版本,请输入以下终端窗口:
top -v
如果版本落后于3.3.12,则可能不支持我们将介绍的所有功能。
默认显示
我们可以通过输入以下内容并单击Enter来启动" top":
top
默认显示包含两个信息区域:摘要区域(或者仪表板)和任务区域(或者过程列表)。默认情况下," top"会每三秒钟更新一次显示,我们会注意到它略微闪烁。
仪表板上的第一行数字包括时间,计算机已运行多长时间,登录的人数以及过去一分钟,五分钟和15分钟的平均负载量。第二行显示任务的数量及其状态:正在运行,已停止,正在睡眠或者处于僵尸状态。
第三行显示以下中央处理器(CPU)值:
us:CPU在用户空间中为人们执行进程所花费的时间。
sy:运行系统内核空间进程所花费的时间。
ni:使用手动设置的nice值执行进程所花费的时间。
id:CPU空闲时间。
wa:CPU等待I / O完成所花费的时间。
嗨:服务硬件中断所花费的时间。
si:服务软件中断所花费的时间。
st:由于运行虚拟机而损失的时间量(窃取时间)。
第四行显示了物理内存的总量(以千字节为单位),以及有多少空闲,已使用以及已缓冲或者缓存。
第五行显示交换内存的总量(也以千字节为单位),以及空闲,已使用和可用的内存量。后者包括可以从缓存中恢复的内存。
流程列表中的列标题如下:
PID:进程ID。
USER:流程的所有者。
PR:流程优先级。
NI:这个过程很有价值。
VIRT:进程使用的虚拟内存量。
RES:进程使用的驻留内存量。
SHR:进程使用的共享内存量。
S:进程状态。 (有关此字段可以使用的值,请参见下面的列表)。
%CPU:自上次更新以来该进程使用的CPU时间的份额。
%MEM:使用的物理内存份额。
TIME +:任务使用的总CPU时间,以百分之一秒为单位。
COMMAND:命令名称或者命令行(名称+选项)。
内存值以千字节为单位显示。 " COMMAND"列在屏幕外,右边不适合上图,但是我们很快就会看到。
进程的状态可以是以下之一:
D:不间断的睡眠
R:跑步
S:睡觉
T:已追踪(已停止)
Z:僵尸
按Q退出"顶部"。
滚动显示
我们可以按向上或者向下箭头,Home,End和Page Up或者Down键向上和向下移动并访问所有过程。
按向左或者向右箭头可将过程列表向侧面移动。这对于查看不在终端窗口范围内的任何列很有用。
在下图中,我们多次按向右箭头以查看" COMMAND"列。
更改数值单位
让我们将显示单位更改为合理的值。按大写E钮以循环显示以下选项中用于显示内存值的单位:千字节,兆字节,千兆字节,兆字节,百兆字节和十亿字节。正在使用的单元是第四行和第五行的第一项。
按小写字母e对进程列表中的值执行相同的操作:千字节,兆字节,千兆字节,兆字节和PB。
我们按E将仪表板存储单元设置为千兆字节,按e将进程列表存储单元设置为兆字节。
更改摘要内容
我们可以更改仪表板上各行的显示设置,也可以完全删除它们。
按l键打开或者关闭负载汇总行(第一行)。我们在下图中删除了负载摘要行。
如果我们有多核CPU,请按1更改显示并查看每个CPU的单独统计信息。我们的计算机上有四个CPU。我们按1查看他们每个人的努力程度。
当然,这会占用终端窗口中更多的屏幕空间。
我们可以按t将CPU的显示切换为简单的ASCII图,显示每个CPU的使用百分比。
对于每个CPU," top"显示三个数字和图形。从左到右,数字如下:
" us"和" ni"组合的百分比(用户空间+具有非标准尼斯设置的任务)。
sy百分比(内核空间)。
总数(四舍五入为整数值)。
再次按t将图形显示更改为实心块字符。
再按一次t,将CPU显示和任务摘要行完全删除。
按m在不同的显示选项之间循环内存和交换内存行。第一次按将统计信息替换为ASCII图。
再按一次可更改图形以阻止字符。
再按一次m即可完全删除CPU行。
如果需要,我们可以同时查看CPU和内存图。只需按t和m,直到获得所需的组合。
颜色和突出显示
我们可以按z向显示添加颜色。
当我们想到" top"时,我们可能不会想到彩色显示器和ASCII图,但是它们是内置的。
按y突出显示进程列表中正在运行的任务。按x突出显示用于对过程列表进行排序的列。我们可以通过按b在粗体和反向文本突出显示之间切换。
按列排序
默认情况下,进程列表按%CPU列排序。我们可以通过按以下内容更改排序列:
P:"%CPU"列。
M:"%MEM"列。
N:" PID"列。
T:" TIME +"列。
在下图中,进程列表按" PID"列排序。
查看完整的命令行
按c可以在显示进程名称和完整命令行之间切换COMMAND列。
要查看由其他进程启动或者产生的进程树,请按V。
请参阅单个用户的流程
按u查看单个用户的过程。系统将提示我们输入名称或者UID。
输入我们要监视的人的UID的名称。我们将键入dave并按Enter。现在,任务区域中仅有的进程属于用户" dave"。
仅查看活动任务
按I仅查看活动任务。
自上次更新以来未消耗任何CPU的任务将不会显示。
设置要显示的进程数
不管任务是否处于活动状态,按n可以将显示限制为一定的行数。系统将提示我们输入要显示的进程数。
我们键入10并按Enter,所以10个进程出现在任务区域中。
Renice一个过程
我们可以按r更改流程的有效值(优先级)。系统将提示我们输入进程ID。只需按Enter键即可使用流程窗口顶部的任务的流程ID。我们输入7800,它恰好是Firefox实例的进程ID。
按下Enter键后,系统会提示我们输入新的nice值以应用于该过程。我们键入15,然后按Enter。
新的nice值将立即应用于流程。
杀死进程
按k终止进程。然后将提示我们输入要杀死的进程ID。实际上,我们可以向该过程发送任何信号。我们将终止进程7879,该进程已停止响应。
我们将有机会键入要发送的信号。我们可以按名称或者数字指定它。如果我们只是按Enter键,则top会发送SIGTERM(杀死)信号。
按下Enter键后,信号即被发送到该过程。
自定义显示
我们还可以自定义显示的颜色和列。我们将更改用于提示的颜色,默认颜色为红色。
按大写字母Z转到颜色设置页面。屏幕的顶部显示了不同显示元素使用的颜色。要指示我们要更改的显示元素,请按下列之一(区分大小写):
S:摘要数据区域。
M:消息和提示。
H:列标题。
T:进程列表中的任务信息。
我们按M更改提示。
要选择颜色,请按以下数字之一:
0:黑色
1:红色
2:绿色。
3:黄色
4:蓝色
5:洋红色
6:青色
7:白色
我们按6使用青色。
按Enter保存设置。输入提示现在将以我们选择的颜色显示。
我们还可以更改"字段管理"屏幕中显示的列。按F进入字段管理屏幕。
显示的字段旁边有一个星号(*),并以粗体突出显示。按下向上和向下箭头,将高亮显示在字段列表中。
如果将突出显示从列底部移出,它将显示在下一列的顶部(除非我们位于最后一列的底部)。如果将其从列顶部移出,它将显示在前一列的底部(除非我们位于第一列的顶部)。
我们将高亮显示移至" COMMAND"条目,然后按d删除星号(" *")。然后,我们移至" UID"条目,并按d将该条目旁边放置一个星号。这意味着将不会显示" COMMAND"列,但会显示" UID"列。
当突出显示在" UID"列上时,我们按s在" UID"列上对过程列表进行排序。
按Enter保存设置,然后按q退出"字段管理"屏幕。
" UID"列已取代" COMMAND"列,并按其对进程列表进行了排序。
替代显示模式
这在全屏模式下效果最佳。按A在进程列表中显示四个区域,然后按a在一个区域之间移动。
每个区域都有不同的列集合,但是每个区域也可以通过"字段管理"屏幕进行自定义。这使我们可以拥有一个全屏的自定义显示,以在每个区域显示不同的信息,并可以按不同的列对每个区域进行排序。
其他按键
以下是在top中可能有用的其他一些键:
W:保存设置和自定义设置,以便它们在我们下次启动" top"时仍然有效。
d:设置新的显示刷新率。
空格:强制" top"立即刷新其显示。