我正在使用 bmon 来监视无线接口的速度。终端命令将当前速度(Rx和Tx)打印到标准输出。
当我执行此命令时...
bmon -p wlp2s0 -o ascii | tee networktraffic.txt
...输出将被打印为txt文件,如下所示:
Interfaces RX bps pps % TX bps pps %
wlp2s0 0 0 0 0
Interfaces RX bps pps % TX bps pps %
wlp2s0 0 0 81B 0
Interfaces RX bps pps % TX bps pps %
wlp2s0 0 0 20B 0
Interfaces RX bps pps % TX bps pps %
wlp2s0 0 0 5B 0
(...)
我正在覆盖文件,因此,随着终端中输出的增加,文件的大小也随之增加。
问题是,我只想将输出的最后一行(最新的速度度量)保存在文件中。但是,当我使用以下命令时:
bmon -p wlp2s0 -o ascii | tail -1 > networktraffic.txt
什么都不会写入文件。
我认为使用以下命令声明 bmon 以1s的间隔连续打印到终端也很重要: bmon -p wlp2s0 -o ascii
我也很感谢其他监视工具的建议,这些建议可以使我一次节省一个速度值。
答案 0 :(得分:0)
IIUC,您希望在任何给定时刻输入最后一行。
tail -1
不会在文件遇到输入结束之前将任何内容写入文件,这永远不会发生。
您需要的是在文件开头写入每行输入的内容。像
bmon -p wlp2s0 -o ascii | while read LINE; do echo "$LINE" > networktraffic.txt; done
如果您需要多于一行,那么它会稍微复杂一些,但是仍然可以使用shell的while
和read
。