GNU 병렬로 스크립트의 많은 인스턴스를 실행하려고하지만 스크립트에는 인수가 없습니다.
‘parallel foo.sh’를 실행하면 다음과 같이 나타납니다.
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
답변
열 번 실행한다고 가정하면이 구문이 작동합니다.
parallel -n0 foo.sh ::: {1..10}
parallel길이 ( ::: {1..10}) 의 입력 시퀀스가 필요하며 입력 시퀀스 ( )의 내용을 무시해야 -n0하며 길이 만 신경 쓰십시오.
원래 명령 : parallel foo.sh에는 원하는 병렬 처리량을 나타내는 입력 시퀀스가 없습니다. 암호 경고는 parallel입력 시퀀스에 대한 터미널 청취를 시작 하겠다고 말하고 있으며 이는 아마도 원하는 것이 아닙니다.
튜토리얼 예제는 다음과 같습니다.
seq 10 | parallel -n0 my_command my_args
작동 방식 :
parallel항상 어딘가에서 입력 시퀀스를 가져옵니다. 인라인 공백으로 구분 된 시퀀스 앞에:::오거나 파이프와 같은 파일 또는 파일과 같은 소스에서 개행으로 구분 된 시퀀스 일 수 있습니다. 이 예제에서 입력 시퀀스는 파이프에서 온 것입니다.seq 101에서 10까지 줄 바꿈으로 구분 된 숫자 시퀀스를 생성합니다.- 이
-n0옵션은 입력 시퀀스의 값을 무시하도록 병렬에 지시합니다. 우리가 신경 쓰는 것은 내용의 길이가 아니라 시퀀스의 길이입니다. 숫자가 사용되지 않더라도 명령은 여전히 10 번 실행됩니다.
또 다른 예:
parallel -n0 echo -n 'x' ::: {1..5}
작동 방식 :
- 입력 시퀀스가 인라인입니다.
{1..5}1에서 5 사이의 공백으로 구분 된 숫자 시퀀스를 생성합니다.-n0시퀀스 값을 무시하고'x'매번 문자열을 에코합니다 .- 산출:
xxxxx
다음과 비교하십시오 :
parallel echo -n ::: {1..5}
작동 방식 :
- 입력 시퀀스가 인라인입니다.
{1..5}1에서 5 사이의 공백으로 구분 된 숫자 시퀀스를 생성합니다.- 입력 시퀀스의 각 값은에 대한 인수로 사용됩니다
echo. 주문이 보장되지 않습니다. - 출력 :
43215. 어떤 주문이든 가능합니다.
답변
매뉴얼의 예제를 읽었습니까? 구체적으로 https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Run-the-same-command-10-times