私のコンピュータの書き込み速度を推定するためにddを使用しようとしています。
dd if=/dev/urandom of=/dev/null bs=1K count=10000
次の出力を提供します
10000+0 records in
10000+0 records out
10240000 bytes (10 MB) copied, 0.746313 s, 13.7 MB/s
bash変数に「13.7MB / s」をどのように入れますか? ddの出力をawk、sed、grepなどのプログラムにパイプで接続してみましたが、役に立ちませんでした。
os.system(...)
最終的にPythonスクリプトを介して呼び出します。 Pythonで同様の結果を得るためのより直接的な方法を知っている人がいれば、私もその方法に興味があるでしょう。ファイルサイズに基づいてファイルのコピーにかかる時間を予測しようとしています。
どんな助けでも大変感謝します。
ベストアンサー1
問題は。STDERR
代わりに dd の出力を指定して 。それだけでなく、STDOUT
リダイレクトも行う必要があるということです。STDERR
STDOUT
|&
bashとzshの場合、これを代わりに使用できます。これは2番目のコマンドにも|
リダイレクトされます。例:STDERR
STDIN
dd if=/dev/urandom of=/dev/null bs=1K count=10000 |& awk '/copied/ {print $8 " " $9}'
より一般的なアプローチは、STDERRの明示的なリダイレクトを使用することです2>&1
。たとえば、次のようになります。
dd if=/dev/urandom of=/dev/null bs=1K count=10000 2>&1 | awk '/copied/ {print $8 " " $9}'
Python部分の場合は、サブプロセスモジュールを確認してくださいPopen
特に。