所以我知道我玩这个游戏迟到了,但我只是想出了这个答案,因为我需要这样做,并且真的不想要额外的字段vmstat
,free
等等......过滤。所以这是我想出的答案:
top -bd 0.1 | grep 'KiB Mem' | cut -d' ' -f10 > memory.txt
或者:
top -bd 0.1 | grep 'KiB Mem' | cut -d' ' -f10 | tee memory.txt
top
whengrep
的标准输出Kib Mem
是:
KiB Mem : 16047368 total, 8708172 free, 6015720 used, 1323476 buff/cache
通过 cut 运行它,我们过滤到字面上只是使用之前的数字
用户确实可以将其修改0.1
为另一个数字以运行不同的捕获采样率。在我的情况下,我还想使用top
,因为您可以在每次捕获时以超过 1 秒的速度运行内存统计信息,正如您在此处看到的那样,我想每 1/10 秒捕获一次统计信息。
注意:
事实证明,管道通过cut
会导致将任何内容归档的巨大延迟。正如我们后来发现的,在数据采集过程中省略命令要快得多cut
,然后在输出文件上执行剪切命令。此外,我们在测试中不需要时间戳。
因此,这看起来如下:
开始记录:
top -bd 0.1 | grep 'KiB Mem' | tee memory_raw.txt
退出日志记录:
ctrl-z (to exit logging)
筛选:
2 级剪切(过滤),首先按逗号,然后按空格。这是由于对齐top
并提供了更清晰的输出:
cut memory_raw -d',' -f3 | tee memory_used_withlabel.txt
cut memory_used_withlabel.txt -d' ' -f3 | tee memory_used.txt