如何从顶部提取值并绘制它们

如何从顶部和绘图中提取价值

作者:Showayb Zahda +

正在进行性能评估和基准测试的许多研究人员需要捕获CPU和RAM的值。 其他人也可能需要捕获吞吐量。 在这篇简短的教程中,我将展示如何从“顶”捕获CPU和RAM值,然后以一行命令解压缩它们。

为了捕获和存储顶部输出,请使用批处理模式“top -b”。 顶部默认情况下每10秒钟更新其读数。 然而,一些研究人员每秒需要这些值。 那么,通过参数d很容易,命令变成“顶部-b -d 1”。 1这里是一秒钟。 此命令将每秒捕获顶部输出。 但是还没有完成。 你需要存储它。 很简单,只需将输出重定向到一个文件:

top -b -d 1 > top.txt

完成实验后,不要忘记按“ctrl + c”停止。 现在你拥有的文件数量很多,你需要的只是一行的一部分。 幸运的是,输出的格式是固定的,这使得提取值非常容易。

以下是顶部秒钟之一的一部分。 看看输出,你可以看到有一行以Cpu开头。 跟随它的是Mem:。 事实上,我们需要这些线的一部分,而不是全部。 那么怎么做呢

top 18: 54:43 up 4:05, 2 users, load average: 3.64, 2.35, 1.37
Tasks: 135 total, 6 running, 129 sleeping, 0 stopped, 0 zombie
Cpu(s): 19.2%us, 19.7%sy, 0.0%ni, 61.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2054160k total, 2016144k used, 38016k free, 12292k buffers
Swap: 4417864k total, 38360k used, 4379504k free, 1310488k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6929 shuaib 15 0 173m 12m 8940 R 65 0.6 7:22.44 gtkgnash
6916 shuaib 15 0 525m 58m 22m S 6 2.9 0:56.39 totem
5717 root 15 0 491m 87m 12m S 3 4.4 2:13.24 Xorg

如果你不熟悉Linux。 事情可能看起来很奇怪,但无论如何,只要使用我将提供的命令,并完成你的工作。 我将使用的命令是这里,cat,grep cut,nl。 我使用它们与流水线,所以一切都将是一行命令。 :)

cat top.txt | grep Cpu

此命令将显示如下内容:

Cpu(s): 14.3%us, 7.4%sy, 0.0%ni, 73.9%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 15.3%us, 7.4%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 11.7%us, 5.4%sy, 0.0%ni, 76.6%id, 2.9%wa, 0.5%hi, 2.9%si, 0.0%st
Cpu(s): 19.6%us, 9.3%sy, 0.0%ni, 66.7%id, 0.0%wa, 0.0%hi, 4.4%si, 0.0%st
Cpu(s): 14.8%us, 9.9%sy, 0.0%ni, 70.4%id, 0.0%wa, 0.5%hi, 4.4%si, 0.0%st
Cpu(s): 16.2%us, 9.3%sy, 0.0%ni, 67.2%id, 0.0%wa, 0.0%hi, 7.4%si, 0.0%st
Cpu(s): 12.3%us, 8.9%sy, 0.0%ni, 72.4%id, 0.0%wa, 0.0%hi, 6.4%si, 0.0%st
Cpu(s): 19.2%us, 11.8%sy, 0.0%ni, 63.1%id, 1.0%wa, 0.0%hi, 4.9%si, 0.0%st
Cpu(s): 16.2%us, 10.3%sy, 0.0%ni, 68.1%id, 0.0%wa, 0.5%hi, 4.9%si, 0.0%st
Cpu(s): 17.7%us, 9.9%sy, 0.0%ni, 68.5%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 15.7%us, 9.8%sy, 0.0%ni, 70.6%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%st
Cpu(s): 13.7%us, 7.4%sy, 0.0%ni, 74.0%id, 0.0%wa, 0.0%hi, 4.9%si, 0.0%st

Wooow这是魔术。 好好考虑一下,如果你喜欢 无论如何,您可以看到每个CPU行代表CPU在一秒钟内的读数。 但是假设我需要这个行的空闲值,例如“68.1%id”。 好了,现在转弯了。 cut命令根据列号切割文件或标准输出中的数据。 列号是一行中的字符数。 一切都是一个,即%是一个,空格是一个,5是一列。 所以,如何计数,可以使用任何文本编辑器,并在编辑器底部读取列号,或者您可以手动进行操作。

使用文本编辑器,我发现列35到39是表示空闲值的数字。 那么怎么剪呢 我们继续遵守我们的命令:

cat top.txt | grep Cpu | cut -c 35-39

输出如下:

73.9
72.4
76.6
66.7
70.4
67.2
72.4
63.1
68.1
68.5
70.6
74.0

还有魔法 没事。 -c 35-39意味着从输入端切割列35到39,并将其输出到终端上。 所以,如果你想捕捉%我们的部分。 只需计数列并替换它们。 记住,我们每秒捕获的值。 所以,如何添加秒,很容易,使用nl:number行:

cat top.txt | grep Cpu | cut -c 35-39 | nl
    1     73.9
    2     72.4
    3     76.6
    4     66.7
    5     70.4
    6     67.2
    7     72.4
    8     63.1
    9     68.1
    10     68.5
    11     70.6
    12     74.0

那么,如果你每3秒钟捕获一次,你可以这样做:

cat top.txt | grep Cpu | cut -c 35-39 | nl -i 3
1 73.9
4 72.4
7 76.6
10 66.7
13 70.4
16 67.2
19 72.4
22 63.1
25 68.1
28 68.5
31 70.6
34 74.0

Woow这太棒了。 现在只需将输出重定向到一个文件:

cat top.txt | grep Cpu | cut -c 35-39 | nl > cpu.txt

将文件放到gnuplot或任何其他绘图软件中,享受。

对于Mem部分。 我想这是轮到你按照相同的步骤来做,但改变参数。

干杯
Showayb AA Zahda
shuaib.zahda@gmail.com

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏