md5sumでpvを使う

md5sumでpvを使う

md5sum以下を使用して、pv同じディレクトリにある4GiBファイルを確認しました。

md5sum dir/* | pv -s 4g | sort

コマンドは約28秒で正常に完了しますが、pvすべてのエラーが出力されます。以下は、全体に表示される出力タイプです。

219 B 0:00:07 [ 125 B/s ] [>                                ]  0% ETA 1668:01:09:02

-s 4gなしで同じです| sort。私も別のファイルで試してみました。

pvwithを使ってみましたが、cat出力がよく出ますね。md5sum

ベストアンサー1

このpvユーティリティは「エキゾチックcat」です。つまり、pv使用しなければならないほとんどの状況で使用できるという意味ですcat

catwith を使用すると、md5sum単一ファイルのMD5チェックサムを計算できます。

cat file | md5sum

またはpv

pv file | md5sum

md5sumただし、残念ながら、この方法ではファイル名を出力に正しく挿入することはできません。

pv幸運にも本物fancy cat、一部のシステム(Linux)では可能です。よりデータが別のプロセスを介して渡されています。これは、-d他のプロセスのプロセスIDとともに、対応するオプションを使用して行われます。

これは、次のことができることを意味します。

md5sum dir/* | sort >sums &
sleep 1
pv -d "$(pgrep -n md5sum)"

これにより、プロセスpvを表示できますmd5sum。これは、バックグラウンドで実行されているプログラムが正しく起動できるsleepようにするためです。md5sumあなたが所有している最後pgrep -n md5sumに開始されたプロセスのPIDを返します。監視中のプロセスが終了するとすぐに終了します。md5sumpv

pvこの特定の実行方法を数回テストした結果、通常はうまく機能しているようですが、時には次のファイルに切り替えながらmd5sum何も出力しないようです。時にはシェルから偽のバックグラウンドタスクを作成するようです。

走るのが一番安全だと思います。

md5sum dir/* >sums &
sleep 1
pv -W -d "$!"
sort -o sums sums

この-Wオプションを使用すると、実際のデータが送信されるのを待ちますが、pv常に確実に動作するわけではありません。

おすすめ記事