8 shell bash io-redirection python dd
我正在尝试使用 dd 来近似计算机的写入速度:
dd if=/dev/urandom of=/dev/null bs=1K count=10000
Run Code Online (Sandbox Code Playgroud)
这给出了以下输出
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.746313 s, 13.7 MB/s
Run Code Online (Sandbox Code Playgroud)
如何将“13.7 MB/s”转换为 bash 变量?我尝试将 dd 的输出通过管道传输到 awk、sed 和 grep 等 prog,但无济于事。
最终,我os.system(...)
从 python 脚本中调用它。如果有人知道在 python 中获得类似结果的更直接的方法,我也会对此感兴趣。我试图根据文件大小预测文件副本需要多长时间。
任何帮助将不胜感激。
Ulr*_*gel 11
问题是你从 dd 指定的输出转到STDERR
而不是STDOUT
所以你必须重定向STDERR
,而不仅仅是STDOUT
.
对于 bash 和 zsh,您可以使用which|&
代替|
which 也将重定向STDERR
到STDIN
第二个命令,例如:
dd if=/dev/urandom of=/dev/null bs=1K count=10000 |& awk '/copied/ {print $8 " " $9}'
Run Code Online (Sandbox Code Playgroud)
更通用的方法是使用 显式重定向 STDERR 2>&1
,例如:
dd if=/dev/urandom of=/dev/null bs=1K count=10000 2>&1 | awk '/copied/ {print $8 " " $9}'
Run Code Online (Sandbox Code Playgroud)
对于 python 部分,请查看 subprocess 模块Popen
,特别是。
归档时间: |
|
查看次数: |
11198 次 |
最近记录: |