Bash 병렬 명령은 명령을 순차적으로 실행합니다.

Bash 병렬 명령은 명령을 순차적으로 실행합니다.

Bash에서 여러 파일을 병렬로 다운로드하려고 하는데 GNU 병렬성을 발견했습니다. 매우 간단하고 간단해 보입니다. 하지만 GNU를 병렬로 작동시키는 데 문제가 있습니다. 내가 뭘 잘못했나요? 어떤 조언이라도 감사하겠습니다. 보시다시피 출력이 매우 연속적이므로 출력이 매번 달라지기를 원합니다. SO에서 비슷한 질문을 보았지만(GNU 병렬은 전혀 작동하지 않음) 언급된 솔루션이 저에게 적합하지 않았습니다.

svarkey@svarkey-Precision-5510:~$ seq 1 3 | xargs -I{} -n 1 -P 4 kubectl 버전 --short=true --context cs-prod{} --v=6
I0904 11:33:10.635636 24861 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:10.640718 24863 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:10.640806 24862 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:11.727974 24863 round_trippers.go:443] GET https://kube-api.awsw3.cld.dtvops.net/version?timeout=32s 1086밀리초 안에 200 OK
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
I0904 11:33:11.741985 24861 round_trippers.go:443] GET https://kube-api.awsw1.cld.dtvops.net/version?timeout=32s 1105밀리초 안에 200 OK
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
I0904 11:33:11.859882 24862 round_trippers.go:443] GET https://kube-api.awsw2.cld.dtvops.net/version?timeout=32s 1218밀리초 내에 200 OK
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
svarkey@svarkey-Precision-5510:~$ seq 1 3 | svarkey@svarkey-Precision-5510:~$ seq 1 3 |parallel -j 4 -I{} kubectl 버전 --short=true --context cs-prod{ } --v=6
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
I0904 11:33:18.584076 24923 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:19.662197 24923 round_trippers.go:443] GET https://kube-api.awsw1.cld.dtvops.net/version?timeout=32s 1077밀리초 안에 200 OK
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
I0904 11:33:18.591033 24928 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:19.691343 24928 round_trippers.go:443] GET https://kube-api.awsw3.cld.dtvops.net/version?timeout=32s 1099밀리초 안에 200 OK
클라이언트 버전: v1.18.7
서버 버전: v1.14.6
I0904 11:33:18.591033 24924 loader.go:375] 파일에서 구성 로드 중: /home/svarkey/.kube/config
I0904 11:33:19.775152 24924 round_trippers.go:443] GET https://kube-api.awsw2.cld.dtvops.net/version?timeout=32s 1183밀리초 안에 200 OK
svarkey@svarkey-Precision-5510:/tmp/parallel-20200822$ 병렬 --version
GNU 병렬 20200822
저작권 (C) 2007-2020 Ole Tange, http://ole.tange.dk 및 자유 소프트웨어
재단 제한
라이선스 GPLv3+: GNU GPL 버전 3 이상
이것은 무료 소프트웨어이므로 자유롭게 변경하고 재배포할 수 있습니다.
GNU 병렬성은 보장하지 않습니다.

웹사이트: https://www.gnu.org/software/parallel

답변1

parallelxargs프로세스가 출력을 즉시 인쇄하는 것과 달리 프로세스 출력을 캡처하고 프로세스가 완료된 경우에만 인쇄한다는 점에서 출력은 순차적입니다 .

~에서man parallel

   GNU parallel makes sure output from the commands is the same output as
   you would get had you run the commands sequentially. This makes it
   possible to use output from GNU parallel as input for other programs.

관련 정보