我刚刚了解到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似乎很有趣,但无法弄清楚上传和下载统计数据)
答案 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