나는 다음과 같은 것을 실행하고 있습니다 :
find . -maxdepth 1 -type f -note -iname "*.gpg" | sort | while read file ; do
echo "Encrypting $file..."
gpg --trust-model always --recipient "[email protected]" --output "$file.gpg" \
--encrypt "$file" && rm "$file"
done
이것은 잘 작동하지만 GPG는 암호화 작업에 다중 코어를 사용하는 데 최적화되지 않은 것 같습니다. 제가 암호화하고 있는 파일은 크기가 2GB 정도인데, 파일이 꽤 많아요. X 작업을 병렬로 실행하여 파일을 암호화한 다음 삭제할 수 있기를 원합니다. 예를 들어 한 번에 8개의 작업을 제한하려면 어떻게 해야 합니까?
답변1
설치하면GNU 병렬달성하려는 작업을 쉽게 수행할 수 있는 도구:
$ find . -maxdepth 1 -type f -note -iname "*.gpg" | sort | \
parallel --gnu -j 8 --workdir $PWD ' \
echo "Encrypting {}..."; \
gpg --trust-model always \
--recipient "[email protected]" --output "{}.gpg" \
--encrypt "{}" && rm "{}" \
'
세부 사항
위의 코드는 출력을 가져와서 find
로 실행 parallel
하고 한 번에 8개씩 실행합니다. {}
전달되는 파일 이름은 모든 곳에 표시되며 이 위치에 있는 find
파일 이름을 대체합니다 .{}
인용하다
답변2
답변3
동시에 실행되는 최대 명령 수를 제어하는 사용하기 쉬운 Perl 스크립트를 작성했습니다.https://github.com/matmu/parallelize_cmds
당신은 관심이 있을 수도 있습니다.