GNUを使用してsha256ハッシュ値を並列に計算する方法は?

GNUを使用してsha256ハッシュ値を並列に計算する方法は?

基準: 複数のダイジェスト(md5、sha256)を同時に計算しますか?

SHA256ハッシュを計算したいファイルがたくさんあるフォルダがあります。

私はセグメントをコーディングしようとしました:

#!/bin/bash
for file in *; do
sha256sum "$file" > "$file".sha &
done

現在、sha256ハッシュを並列に計算しています。ただし、マイコンピュータには物理コアが16個しかありません。

もしそうなら、私の質問は、GNUパラレルを使用してどのように実行できるかということです。ただし、システムで使用可能な16個の物理コアのみを使用し、ハッシュが完了すると自動的に次のファイルハッシュを選択しますか?

ベストアンサー1

GNUを使用すると、parallelシェルループを完全に回避し、以下を実行できます。

parallel -P 16 sha256sum {} ">"{}.sha ::: *

これはsha256sum、globから返されたすべてのファイル(またはディレクトリ、しかしスクリプトが実行するアクション)で実行され、*出力をfileName.sha

$ ls
file1  file2  file3  file4  file5
$ parallel -P 16 sha256sum {} ">"{}.sha ::: *
$ ls
file1      file2      file3      file4      file5
file1.sha  file2.sha  file3.sha  file4.sha  file5.sha

しかし、@Kusalandandaを覚えておいてください。指摘この種のボトルネックの主な原因はI / Oであり、必ずしもCPUではありません。 16個未満を並列に実行することをお勧めします。

おすすめ記事