답변:
while 루프를 사용하지 않습니다.
parallel "sortstuff.sh -a {} > sortedstuff-{}" <live_hosts
경로 가 확장되어 ( live_hosts
예 :) 경로가 있으면 작동하지 않습니다 . 이러한 경우 사용 및 세부 사항 은 매뉴얼 을 참조하십시오 ./some/dir/file
sortstuff.sh -a /some/dir/file > sortedstuff-/some/dir/file
no such file or directory
{//}
{/}
gnu-parallel
parallel "sortstuff.sh -a {} > {//}/sortedstuff-{/}" <live_hosts
>
를 | tee
들어 첫 번째 명령은 다음 과 같이 바꾸십시오parallel "sortstuff.sh -a {} | tee sortedstuff-{}" <live_hosts
당신은하지 않습니다 필요 parallel
루프의 몸이 이전의 반복에 의존하지 않기 때문에. 각 호스트에 대해 새로운 백그라운드 프로세스를 시작하십시오.
while read host; do
sortstuff.sh -a "$host" > sortedstuff-"$host" &
done < live_hosts
wait # Optional, to block until the background tasks are done
parallel
하지만 특정 측면을보다 쉽게 관리 할 수 있습니다. 병렬로 실행중인 작업 수를보다 쉽게 제한 할 수 있습니다.
wc -l live_hosts
더 많은 디스크 스핀들 또는 CPU 코어의 수보다 - 당신은 당신이 그와 같은 솔루션을 병렬에서 얻을 수있는 장점을 많이 먹을거야 - 작업이 내가 / O 나 CPU가 결합 된인지에 따라 달라집니다. parallel
작업 수를 제한하는 기능은 단지 좋은 것이 아니라 처리 속도가 목표 인 경우 거의 필수적입니다.
tee
함께 사용할 수 있습니까? 그래서 출력이 진행되는 것을 볼 수 있습니다.parallel
sortedstuff