ifstat记录带宽使用情况

时间:2011-05-04 05:25:32

标签: bash

我刚刚了解到ifstat显示网络使用情况,而以下命令在控制台屏幕上显示我想要的内容

/usr/bin/ifstat -i eth0 -b -n | awk 'NR>2 {print "Download" $1 "upload" $2}'

我想将其输出到文件中,以便我可以使用javascript库来绘制这些值..

但我似乎无法将日志输出到文件

/usr/bin/ifstat -i eth0 -b -n | awk 'NR>2 {print "Download" $1 "upload" $2}' > bandwidth.txt

bandwidth.txt为空

有人可以建议如何将网络带宽使用记录到文件中(collectl似乎很有趣,但无法弄清楚上传和下载统计数据)

1 个答案:

答案 0 :(得分:2)

awk正在缓冲其输出。通常,当stdout是终端时,大多数程序使用行缓冲,但当stdout不是终端时,切换到更大的缓冲区大小,awk也不例外。如果您运行命令的时间足够长,那么当缓冲区填满并刷新时,您最终会看到文件大小以大小为4096左右(可能更多或更少)的块增长。

要强制awk在每一行之后刷新其缓冲区,无论stdout是否是终端,请添加fflush()命令:

/usr/bin/ifstat -i eth0 -b -n | awk 'NR>2 {print "Download" $1 "upload" $2; fflush()}' > bandwidth.txt