Logging 仅将连续标准输出的最后一行保存到文件

Logging 仅将连续标准输出的最后一行保存到文件,logging,kernel,output,monitoring,bandwidth,Logging,Kernel,Output,Monitoring,Bandwidth,我正在使用bmon监控无线接口的速度。终端命令将当前速度(Rx和Tx)打印到标准输出 当我执行此命令时 bmon -p wlp2s0 -o ascii | tee networktraffic.txt …输出将打印到txt文件,如下所示: Interfaces RX bps pps % TX bps pps % wlp2s0

我正在使用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


我也非常感谢其他监控工具的建议,这些工具允许我一次保存一个速度值。

IIUC您希望在任何给定时刻输入最后一行

tail-1
在遇到输入结束之前不会向文件写入任何内容,这是永远不会发生的

您需要的是在文件开头写入每个输入行。差不多

bmon -p wlp2s0 -o ascii | while read LINE; do echo "$LINE" > networktraffic.txt; done
如果您需要多行代码,那么它会稍微复杂一点,但仍然可以使用shell的
read