많은 파일을 처리하고 싶습니다. 여러 코어가 있으므로 병렬로 처리하고 싶습니다.
for i in *.myfiles; do do_something $i `derived_params $i` other_params; done
나는 Makefile 솔루션을 알고 있지만 명령에는 쉘 globbing 목록에서 인수가 필요합니다. 내가 찾은 것은 :
> function pwait() {
> while [ $(jobs -p | wc -l) -ge $1 ]; do
> sleep 1
> done
> }
>
이를 사용하기 위해서는 작업과 pwait 호출을 모두 한 후 수행해야합니다. 매개 변수는 병렬 프로세스 수를 제공합니다.
> for i in *; do
> do_something $i &
> pwait 10
> done
그러나 이것은 잘 작동하지 않습니다. 예를 들어 많은 파일을 변환하는 for 루프로 시도했지만 오류가 발생하여 작업이 취소되었습니다.
zsh 메일 링리스트에 대한 토론이 너무 오래되어서 아직 완료되지 않았다는 것을 믿을 수 없습니다. 그래서 당신은 더 잘 알고 있습니까?
echo "DONE"
했는데, 활성 작업이 완료되기 전에 실행 된 루프 뒤에 표시기를 배치했습니다 . => 이로 인해 작업이 완료되지 않았다고 생각했습니다.