如何从顶部和绘图中提取价值
作者: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