我正在使用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 的while
和read
。