입력없이 스크립트를 실행하기 위해 병렬 사용 많은 인스턴스를 실행하려고하지만 스크립트에는 인수가

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 10 1에서 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


답변