命令为 运行 Linux 时如何输出重定向以覆盖文件?
How to output redirect to overwrite file while command is running Linux?
我不确定这是否可能。但我正在使用此命令来获取网络吞吐量。
ifstat -t -S -i wlan0
运行 就像它在控制台上内联更新一样,但是当我通过管道传输它时,它会在文件中附加一个新行。
ifstat -t -S -i wlan0 >> /tmp/transfer.txt
Time wlan0
HH:MM:SS KB/s in KB/s out
21:33:35 4.27 201.47
21:33:36 4.20 178.88
21:33:37 4.41 190.76
21:33:38 4.32 186.61
21:33:39 5.07 177.42
21:33:40 4.15 182.87
21:33:41 5.70 180.93
21:33:42 4.21 194.71
21:33:43 3.80 181.35
21:33:44 3.86 185.57
21:33:45 3.92 189.78
21:33:46 4.08 195.29
etc...
好的,我知道使用它只会在我 运行 应用程序执行期间第一个 time.Not 之后覆盖 file.But。
ifstat -t -S -i wlan0 >> /tmp/transfer.txt
我真的不需要保留所有传输速率的日志,只是 有兴趣在应用程序 运行ning 时在每次更新时写下一行 . 我希望它每秒创建一个新文件或覆盖它,而不是在执行期间附加行。
从技术上讲,您不是管道,而是重定向输出。
您似乎想使用 >
而不是 >>
?
为了仅获取最后一行 而 ifstat 正在执行,您可以将其提取到第二个文件中,如下所示:
while true; do tail -1 /tmp/transfer.txt > /tmp/transfer2.txt; sleep .5; done
每次都覆盖文件而不保留日志。
while true; do ifstat -t -i wlan0 1 1 | tail -1 > /tmp/transfer.txt; sleep .5; done;
您可以尝试以下方法之一(我没有您的 ifstat
版本,因此无法在我自己的系统上进行验证)。
while /bin/true; do ifstat -t -i wlan0 1 > tmp/transfer.txt; sleep 1; done
或者只是
ifstat -t -i wlan0 > tmp/transfer.txt
所以,不要使用 -S
标志,因为这在重定向到文件时不起作用。
我不确定这是否可能。但我正在使用此命令来获取网络吞吐量。
ifstat -t -S -i wlan0
运行 就像它在控制台上内联更新一样,但是当我通过管道传输它时,它会在文件中附加一个新行。
ifstat -t -S -i wlan0 >> /tmp/transfer.txt
Time wlan0
HH:MM:SS KB/s in KB/s out
21:33:35 4.27 201.47
21:33:36 4.20 178.88
21:33:37 4.41 190.76
21:33:38 4.32 186.61
21:33:39 5.07 177.42
21:33:40 4.15 182.87
21:33:41 5.70 180.93
21:33:42 4.21 194.71
21:33:43 3.80 181.35
21:33:44 3.86 185.57
21:33:45 3.92 189.78
21:33:46 4.08 195.29
etc...
好的,我知道使用它只会在我 运行 应用程序执行期间第一个 time.Not 之后覆盖 file.But。
ifstat -t -S -i wlan0 >> /tmp/transfer.txt
我真的不需要保留所有传输速率的日志,只是 有兴趣在应用程序 运行ning 时在每次更新时写下一行 . 我希望它每秒创建一个新文件或覆盖它,而不是在执行期间附加行。
从技术上讲,您不是管道,而是重定向输出。
您似乎想使用 >
而不是 >>
?
为了仅获取最后一行 而 ifstat 正在执行,您可以将其提取到第二个文件中,如下所示:
while true; do tail -1 /tmp/transfer.txt > /tmp/transfer2.txt; sleep .5; done
每次都覆盖文件而不保留日志。
while true; do ifstat -t -i wlan0 1 1 | tail -1 > /tmp/transfer.txt; sleep .5; done;
您可以尝试以下方法之一(我没有您的 ifstat
版本,因此无法在我自己的系统上进行验证)。
while /bin/true; do ifstat -t -i wlan0 1 > tmp/transfer.txt; sleep 1; done
或者只是
ifstat -t -i wlan0 > tmp/transfer.txt
所以,不要使用 -S
标志,因为这在重定向到文件时不起作用。