如何将 pv 的 stderr 输出打印到文件中?例如:
timeout 5s dd if=/dev/random | pv -r > /dev/null
[ 505kiB/s]
速率线输出在我的五秒超时过程中"更新"。我试过这个,但它不起作用(日志为空(:
timeout 5s dd if=/dev/random | pv -r > /dev/null 2> rates.log
我相信这与 stderr 输出中的回车符有关,但一个小时后我卡住了。理想情况下,每次 pv 打印新值时,我的日志文件都会有多行:
[ 505kiB/s]
[ 498kiB/s]
[ 542kiB/s]
[ 513kiB/s]
[ 509kiB/s]
更新:
为了像上面描述的那样将内容放入文件中,我不得不使用 stdbuf,尽管我不确定为什么需要它(单独的 tr 不起作用,没有 stdbuf 的文件将是空的(:
timeout 5s dd if=/dev/random | pv -fr > /dev/null 2> >(stdbuf -oL tr 'r' 'n' > rates.log)
从man pv
:
- -f, --力
- 输出。 通常,pv不会输出任何视觉显示 如果标准错误不是终端。 此选项强制它 这样做。
由于rates.log
不是终端,因此您需要执行pv -fr
而不是pv -r
。