[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

尝试像熟练的工程师一样使用 top 命令

你好。
我是Mandai,负责Wild 开发团队。

据说,当所谓的黑客绕过各种监控和封锁系统登录服务器时,他们使用的第一个命令就是“w”命令,你打的命令不就是“ps”命令还是“top”命令吗? ?

这次,我将更认真地了解如何使用 top 命令,这将使您与众不同。

开始之前

当您运行top命令时,它被分为两个区域:上面的摘要区域显示整个系统的资源,下面的任务区域显示正在运行的进程。

我们从现在开始介绍的许多功能都会影响其中之一,我们将在解释中使用它们,所以请记住这一点。

 

如何点击顶部命令

可能有点突然,但是通过 ssh 登录后,我觉得稍微前倾一点说“顶”有点业余的做法。

top 命令可以像其他命令一样有参数,所以没有理由不使用它。
最好在登录时花时间考虑一下您需要哪些参数。

例如,要显示正在执行的完整命令:

顶部-c

 

这么说吧。

另外,如果你想更改默认的 3 秒屏幕刷新

top -d 0.5 # 每0.5秒更新一次屏幕

 

这么说吧。

同时发出以上两项

top -c -d 0.5 # 或 top -cd 0.5 # 下面是愚蠢的 top -dc 0.5

 

这么说吧。
如果更新屏幕太快,负载会意外增加,因此请务必适度。

 

跑步时你可以做什么

切换摘要区域的显示

摘要区域分为三个主要部分。

  • 正常运行时间(启动时间)和总体负载信息 (l) 由红框包围
  • CPU 和任务信息 (t) 被绿框包围
  • 蓝色框包围的内存和交换信息 (m)

您可以通过按相应的键(括号中的键)来显示/隐藏它们。

另外,还有一个重要的键“1”,如果按下该键,如果CPU是多核的,则会单独显示每个核的负载。

 

切换任务区域显示

虽然你可以在默认的顶屏上看到当前的系统负载状态,但也确实有很多项目没有显示。

如果在top运行时按“f”,将会显示top可以显示的项目列表,您可以设置是否显示或隐藏它们。
在此屏幕上,您可以上下移动光标,因此将光标移动到要显示的项目,然后按“d”或空格键将其加粗,该项目就会显示出来。

交换使用情况是非常难以获取的,但可以从顶部屏幕获取。

此外,如果您向上或向下移动它,然后按右键,则会选择整个项目,并且在该状态下向上或向下移动它,您可以调整项目的显示顺序。

下面的视频显示了显示的交换使用情况并显示在命令的前面。

 

信号传输

如果您想知道什么是信号,请查看维基百科

相当于“kill [pid]”的东西可以在上面执行。

为此,请在运行 top 时按“k”。如果此时按错了键,可以用escape键退出。

任务区域上方将出现“PID to signal/kill”消息,因此输入要杀死的进程ID。

接下来,会出现消息“Send pid [PID] signal [15/sigterm]”,因此发送您要发送的信号名称/信号编号。
默认情况下,它发送 sigterm(15),因此如果进程没有因此而终止,请尝试发送 sigkill(9)。

推荐这样做是因为您可以在查看顶部屏幕时终止进程。

 

专家的分割窗口模式(交替显示模式)

我不知道为什么,但顶部有一个(备用显示模式),可以将屏幕分成最多 4 个部分来查看正在运行的进程。

分割模式(我们在这里称之为,man top 的翻译版本称为备用视图模式)和常规全屏模式之间切换。

进入分割模式时的屏幕配置如下。

不是一般的上衣! 这不是一个错误。
这个想法是任务区域最多可以容纳四种类型,并且您可以根据要显示的项目调整和切换字段。

默认为屏幕 1,要移动到另一个屏幕,请按“a”向前移动,按“w”向后移动。
另外,如果您想移至特定页面,请按“g”,然后按数字 1 至 4,但由于只有 4 页,您可能永远不会使用它们。

移动屏幕后,按“Shift + a”返回全屏模式。
任务区域的显示格式将发生变化,进程将填满整个屏幕。

对于每个屏幕,您可以使用“f”来调整字段并指定要排序的字段,以便您可以进行调整。

如果按原样退出程序,则在分割模式下进行的调整将返回到原始状态,因此如果输出下述设置文件,则下次启动时将能够使用反映的设置。

 

预定义启动时的输出状态

当检测异常并检查顶部时,这通常是一场与时间的赛跑,因此您可以认为每次都带参数运行它是浪费时间。
既然如此,我认为一种方法就是将其写入配置文件中。

定义显示状态的配置文件通常输出到每个用户名为“$HOME/.toprc”的文件中。

设置方法很简单,只需将顶部的显示设置为您喜欢的,然后按“W”退出即可。
它是大写的 W,因此如果您关闭了 Caps Lock,请使用“Shift + w”输入它。

生成的文件如下所示:

top 的配置文件(带有 Windows 的 Linux 进程) Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=3.0, Curwin=0 2 fieldscur=\œ´»½Àä·º1Å&')*+,-./012568<> ?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij winflags=193844, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=0 summclr=1, msgsclr=1, headclr=3, taskclr=1 作业字段cur=¥ª· º(³´ä»½@<§Å)*+,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij winflags=161076, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0 summclr= 6、msgsclr=6、headclr=7、taskclr=6 1 fieldscur=\º»<½ª¿ ÀÁMBNàD34·Å&'()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghij winflags=193844,sortindx=21,maxtasks=0,graph_cpus=0,graph_mems=0 summclr=5,msgsclr=5,headclr=4 ,taskclr = 5用户字段cur = \ § ª°1·°ÅÅ)+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij winflags = 193844,sortindx = 3,maxtasks = 0,graph_cpus =0、graph_mems=0 summclr=3、msgsclr=3、headclr=2、taskclr=3 固定_widest=0、summ_mscale=0、task_mscale=0、Zero_suppress=0

 

老实说,在这种状态下,我不知道发生了什么(一一检查也不是不可读),所以我认为最好不要手动创建这个文件。

相反,一个配置良好的文件只需复制粘贴即可应用到其他机器上,因此即使在使用Chef或ansible构建时也可以轻松反映。

 

为top命令准备多个配置文件

随着您更多地参与配置顶部屏幕,您可能需要准备多个屏幕设置并根据情况使用它们。
然而,top的配置文件是“$HOME/.toprc”,这是我之前写的。

事实上,这并不是正确的解释。

正确的是,“$HOME/.[top name]rc”是正确的。
我尝试尝试找出 top 这个名字的含义。

# 检查当前top路径 $ which top /usr/bin/top # 在/usr/bin/mytop中创建到/usr/bin/top的符号链接 $ sudo ln -s /usr/bin/top /usr /bin/ mytop # 尝试运行 $ mytop

 

运行正常,顶部正常打开。

现在,如果更改字段并显示并保存它,将创建一个名为“$HOME/.mytoprc”的文件。

这样就可以创建符号链接并写入不同的配置文件。
由于您将以不同的名称运行您自己的定制上衣,因此它不会影响正常的上衣。

 

以批处理模式启动

认为top是一个只在屏幕上实时显示系统状态的工具,这是一个很大的错误。它还具有批处理模式。
以下命令将把最上面的结果发送到标准输出。

顶部-b -n 5 -d 0.5

 

使用“-b”选项以批处理模式启动,并使用“-n”指定显示次数。
此外,使用“-d”选项指定显示间隔。

在这种情况下,顶屏5次的结果将以0.5秒的间隔发送到标准输出。

当然,你也可以通过管道将其传递给其他命令,但以下命令往往是不正确的。

顶部-b -n 5 -d 0.5 | 头部-n 5

 

如果你尝试一下,你就会明白我的意思。
如果你看一下命令,你大概可以想象到你想要什么样的结果,但是top命令不适合这种情况。

 

概括

top 命令是一个有用的命令,在多种情况下都很有用,但是您是否知道通过自定义它可以变得更加有用?

整个事情看起来像这样,但有趣的是,您可以根据您的定制策略将其变得尽可能复杂。

通过这种方式,我们可以全年 365 天、每天 24 小时监控我们的服务器。

就是这样。

如果您觉得这篇文章有帮助,请点赞!
3
加载中...
3 票,平均:1.00 / 13
17,863
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。