'dd'からawk/sed/grepに出力を送信する

'dd'からawk/sed/grepに出力を送信する

私のコンピュータの書き込み速度を推定するために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リダイレクトも行う必要があるということです。STDERRSTDOUT

|&bashとzshの場合、これを代わりに使用できます。これは2番目のコマンドにも|リダイレクトされます。例:STDERRSTDIN

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特に。

おすすめ記事