我从事基础设施工程师工作 20 年后才第一次学到一种可以显著改进 top 命令显示效果的方法。

你好,我是Seiken。我来加拿大快一年了,但我的英语一点都没进步,别人问我“你好吗?”的时候,我还是会回答“我很好,谢谢”。
顶级命令是所有基础设施工程师的最爱,而且很可能是你在 Beyond 操作服务器时学到的第一个命令。
它实际上是一个非常强大的命令,可以执行很多不同的操作,所以直到现在,我一直很自豪地将我作为资深工程师的经验传授给我的后辈,比如我会说“你也可以这样做”。但我想介绍一种我最近才发现的超级便捷的用法。内容
有点长,请耐心看完。
运行 top 命令后,将显示以下屏幕:

单凭这一点就包含了服务器操作的重要信息,但我认为还有很多其他文章解释了如何使用 top 命令,所以这次我就略过它了。
这次,我们让这条顶级命令的最终显示效果如下所示:

共有五点
- 显示详细信息,例如进程参数
- 添加展示项目并更改展示顺序
- 显示状态为“正在运行”且排序列粗体的进程
- 更改排序方式
- 保存您的设置(这是最重要的一步)
我们现在就试试。
显示详细信息,例如进程参数
这很简单,只需按下c键即可。
首次运行 top 命令时,添加 -c 选项即可获得相同的结果,但
如果您不小心忘记添加 -c 选项,则此方法很有用
添加展示项目并更改展示顺序
在日常运营中,我们不仅监控客户服务或进程停止等关键情况,还会监控 CPU 和内存使用情况,以便快速检测服务器资源即将耗尽的情况,并在故障发生前采取措施加以预防。通常情况
下,我们会用到三个指标:CPU 使用率、内存使用率和交换空间使用率。但默认情况下,top 命令不会显示交换空间使用率。
不过,top 命令有一些默认隐藏的字段,您可以进行设置,使其也显示交换空间使用率。
我们开始做吧
按下 Shift+f 键会将“字段管理”屏幕更改为以下内容:

这次,我们要在显示屏上添加 SWAP 使用情况,所以请使用上下箭头键移动到 SWAP 项。

按下空格键,在项目左侧添加一个 *,该项目将被添加到显示项目中。

如果保持原样,它将显示在 COMMAND 之后,因此我们将把它显示在 %MEM 之后,以便更容易与其他指标进行比较。
按下右光标键会稍微扩大选择光标,从而可以移动光标。

使用上下方向键移动到所需位置

移动完成后,按左光标键将其恢复到原始选中状态并固定其位置。

按 q 或 Esc 键退出字段管理屏幕

SWAP 项已添加到 %MEM 旁边。
显示状态为“正在运行”且排序列粗体的进程
现在我们已经使其在视觉上更容易理解,接下来我们将状态为“运行中”的进程以及当前排序的列加粗显示。
同时,我们还要更改屏幕显示的颜色。
按Shift+z键显示以下屏幕:

您可以更改每个字段的颜色,但不知何故,默认颜色为红色。
它看起来有点毒,所以按 7 把它变成白色。

上面的“汇总数据”列也是红色的,所以使用“shift+S”切换要更改颜色的字段,然后按7将其更改为白色。

如果按下 shift+s,则“1) 选择目标字母为大写字母.....”部分会发生变化,这有点令人困惑。

输入数字即可将其更改为您喜欢的颜色。我试了好几个不同的数字,最后选择了7(白色)。
除了白色之外还有很多其他颜色,请选择您喜欢的颜色。
要保存此状态并退出,请按“回车”键。

如果之前选择的屏幕颜色设置已保存,则表示操作成功。
此外,我们将状态为“正在运行”的进程加粗,并将我们当前排序依据的字段加粗。
按下 x 键会将您正在排序的字段加粗,按下 y 键也会将状态为 RUNNING 的进程加粗。

在 Mac 终端中可能不太容易看清,但你可以看到排序字段 (%CPU) 和状态 (S) 为 RUNNING (R) 的进程(在本例中为 top 命令)以粗体突出显示了吗?
更改排序方式
我认为 top 命令的使用变得更加便捷。在
日常运维中,我们需要调查客户服务器上出现的告警原因,因此除了默认的 CPU 使用率显示之外,我们通常还需要按内存使用率或交换空间使用率进行排序。
在这种情况下,您可以按“shift+<”或“shift+>”将排序字段向左或向右移动。

有点难理解,但我尝试使用 Shift+> 将排序顺序从 %CPU 改为 %MEM 再改为 SWAP
。还有快捷键:Shift+p(按 %CPU 排序)和 Shift+m(按 %MEM 排序)。
保存您的设置(这是最重要的一步)
最后,让我们保存目前为止所做的设置。
我们尝试了各种方法来更改显示,但如果我们按原样退出 top 命令,下次运行 top 命令时,显示将恢复到其原始状态。
每次都要重复这些步骤,太麻烦了。
如果要保存当前显示状态,请按“shift+w”键。
当前设置保存在运行 top 命令的用户主目录中的名为 .toprc 的文件中。
顺便一提,目前的解释中包含一些针对 Red Hat 7 系列(CentOS 7、Amazon Linux 2)的 top 命令的特定内容
其他操作系统的 top 命令可能需要略微不同的操作,但几乎可以实现相同的功能。因此,如果您
有任何关于如何在其他操作系统上执行相同操作的问题(虽然我估计您不太可能遇到),我很乐意提供帮助。
从明天起,这将帮助我们更高效地处理监控警报!
也许只有我们这么想,但我们希望这篇文章对某些人有用,即使他们自己可能还没意识到这一点。
25