尝试像熟练的工程师一样使用 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 小时监控我们的服务器。
就是这样。