ddステータス/結果メッセージをファイルに書き込むにはどうすればよいですか?

ddステータス/結果メッセージをファイルに書き込むにはどうすればよいですか?

このddコマンドを使用してディスク速度を確認します。

dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct

次の内容を返します。

1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 8,52315 s, 126 MB/s

dd今、この出力を私が書いているファイルではなく別のファイルにパイプしたいと思います。

追加してみました

>> /tmp/foo

または

| sudo tee /tmp/foo

command を実行しますddが、これは空のファイルを生成するだけです。

答え1

他のコマンドの前または後にパイプを挿入できるように、対応するdd情報メッセージは標準出力ではなく標準エラーに書き込まれます。

OpenBSD マニュアルddこれを明示的に言及します(しかしUbuntuのマニュアルこれは無視されているようですが、より完全なページinfoに記載されています。)

完了すると、完全ddおよび部分的な入力および出力ブロックの数と切り捨てられた入力レコードが表示されます。標準エラー出力

コマンドから標準エラーをリダイレクトするには、を使用します2>filename。標準エラーストリームを切り捨てずに既存のファイルに追加するには2>>filename

たとえば、

dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct 2>dd.txt

最初の例の追加された出力>>と2番目の例の切り捨てられた出力がtee混在していることに注意してください。ファイルに追加するには、teeを使用しますtee -a

答え2

dd出力は実際には印刷されませstderrん。stdout

stderr次のようにファイルをコマンドにリダイレクトできますdd

$ dd if=/dev/zero of=/path/file bs=1G count=1 oflag=direct 2>> /path/to/file

関連情報