パイプされたときのmd5sumの進行状況

パイプされたときのmd5sumの進行状況

ドライブルートのすべてのファイルがmd5の合計を計算し、md5sumに基づいて出力をソートするようにrsync2つのUSBデバイスを比較しています。たとえば、コマンド全体が次に展開されます。急いで、状況がどのように進行しているのか、つまり今どのようなファイルが処理されているのか疑問に思います。他のコマンドでパイプするので、atmをハッシュするファイルを見ることができるstdoutまたはstderrはありません。他のコマンドが実行するアクションを報告できるコマンドはありますか?md5sum /usb1/* /usb2/* | sortmd5sum /usb1/bigfile1 /usb1/bigfile2 /usb2/bigfile1 /usb2/bigfile2

「シグナル」とマークしていますが、シグナルでmd5sumプロセスを簡単に中断することができるシグナルについて十分にはわかりません。dd進行状況を報告するように信号を送信することが可能であったことを覚えておいてください。

答え1

あなたはそれを使用することができますprogressそのために:

progress -p $(pgrep md5sum)

または継続的な監視が必要な場合md5sum

progress -m -p $(pgrep md5sum)

md5sum外部ツールを使用せずに、現在Linuxでどのファイルにアクセスしているかを一覧表示して/proc/$(pgrep md5sum)/fd確認できます。md5sum/proc/$(pgrep md5sum)/fdinfo

ご存じのとおり、dd進捗レポートは受信したとおりに印刷されますが、これはSIGUSR1一般的な信号媒介機能ではなく実装された機能です。ddデフォルトでSIGUSR1プロセスに送信すると、そのプロセスは終了します。

答え2

別の同様のコマンドcatは、pvファイルの内容をstdoutにポンピングし、別のプログラム(md5sum)にパイプし、stderrを介して進行状況表示を出力します。一度に1つのファイルにのみ適していますが。次のようなものを使用してくださいpv /usb1/bigfile1 | md5sum

関連情報