2011-05-04 35 views
0

我剛剛得知ifstat顯示網絡使用情況,以下命令給出我想要在控制檯屏幕上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似乎是有趣的,但不能找出得到uplaod和下載數據)

回答

2

AWK是緩衝輸出。通常,當stdout是終端時,大多數程序使用行緩衝,但當stdout不是終端時切換到更大的緩衝區大小,並且awk也不例外。如果你長時間運行你的命令,你最終會看到隨着緩衝區填滿並被刷新,文件大小會以4096左右的大小增長(可能或多或少)。

要強制awk的每一行後刷新其緩衝區無論標準輸出是否是一個終端,添加一個fflush()命令:

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

的偉大工程TKS,並瞭解fflush一個新的東西() – Linus 2011-05-04 06:38:09