我正在使用sar从我的wlp2s0接口(1 秒间隔)收集网络统计信息,如下所示:
$ sar -n DEV 1 | grep wlp2s0
连续输出如下所示:
18:15:06 wlp2s0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
18:15:07 wlp2s0 1,00 2,00 0,12 0,28 0,00 0,00 0,00 0,00
18:15:08 wlp2s0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
18:15:09 wlp2s0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
18:15:10 wlp2s0 0,00 1,00 0,00 0,24 0,00 0,00 0,00 0,00
18:15:11 wlp2s0 0,00 1,00 0,00 0,24 0,00 0,00 0,00 0,00
我只想在 .txt 文件中写入输出的最后一行(当前测量值)。问题是,我不知道如何构造一个命令来做到这一点。
我可以写入文件的唯一方法(不断增加其大小,这不是我想要的)是通过执行以下操作:
$ sar -n DEV 1 > output.txt
标准输出一直在增加,因为我正在覆盖文件,所以将写入所有先前和即将到来的行。
[编辑] 我的问题不依赖于这个工具(sar),它发生在任何具有连续输出的工具上。我听说过循环缓冲区,但我认为在这种情况下它不会起作用。
这可以在 shell 中通过循环输出行并将每一行写入所需的输出文件来完成,如下所示:
@OleTange
perl
基于 - 的解决方案在进程创建方面可能更有效,但如果你的 shell 恰好有一个内置的printf
这个方法可能几乎一样精益。