「kill -USR1」-ing ddのきれいな出力

「kill -USR1」-ing ddのきれいな出力

完了すると、dd読み書きしたセグメント数、合計サイズ、平均書き込み速度の3行の要約が印刷されます。働くときはddとても静かです。

しばらく前に(申し訳ありませんが)dd3行の要約を印刷できることがわかりました。まだ働いている間SIGUSR1私がこれをしたので。

dd <magic incantation> &
watch kill -USR1 $!

問題は、要約の3行がdd左揃えされないことです。各後続の行は、前の行が終了した列から始まります。したがって、改行はdd印刷されますが、キャリッジリターンは印刷されず、watch出力を印刷するために使用されるすべての項目にはキャリッジリターンが必要です。

killコマンドの後にさまざまな種類の参照を追加してみましたが、| sed -e '<expression>'得られた出力はまったく変わりませんでした。

ddこのような状況でどうすればきれいな印刷物を得ることができますか?

ベストアンサー1

kill -USR1どこにいるのか知る必要はありませんdd。あなたはそれを使用することができますlsof入力ファイル記述子の場所を表示します。解析可能な出力を取得するのは少し難しいですが、うまくいきます。これは0入力ファイル記述子です。標準入力から読み取らずにif=…引数を渡す場合は、実装に応じてdd他の記述dd子から読み取ることができます。

lsof -a -o -p $! -d 0 -F o | sed -n 's/^o[0-9]*t//p'

Linuxでは、この情報をから直接取得できます/proc

</proc/$!/fdinfo/0 awk '$1 == "pos:" {print $2}'

cat代わりに、以下を使用したい場合がありますdd一般的に高速そしてエラーが発生する可能性が低い。

おすすめ記事