基準: 複数のダイジェスト(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個未満を並列に実行することをお勧めします。