백그라운드에서 GNU Parallel을 시작하시겠습니까?

백그라운드에서 GNU Parallel을 시작하시겠습니까?

백그라운드에서 GNU Parallel을 시작하거나 어떻게든 백그라운드로 보낼 수 있습니까?

parallel동시에 두 개의 명령을 실행할 수 있도록 이 작업을 수행하고 싶습니다 .

하나의 병렬 명령으로 모든 작업을 수행하면 안 되는 이유는 무엇입니까? 두 가지 이유:

  1. 병렬 속도는 잠시 후 느려지고,
  2. 모든 것을 중단하지 않고 한 그룹의 실행을 중단할 수 있도록 분리하고 싶기 때문입니다.

답변1

백그라운드에서 병렬로 실행될 수 있습니다. 최근에 나는 병렬로 실행되어야 하는 유사한 스크립트를 작업 중이었고 다음에서 조언을 받았습니다.이것답변. 링크 타고 가시면지정됨내 답변의 일부로 다음 답변이 표시됩니다.

GNU Parallel은 계산 세마포어로 사용될 수 있습니다. 이는 일반 모드보다 느리고 효율성이 떨어집니다.

의 별칭 parallel --semaphore은 입니다 sem. 기본 설정은 한 번에 하나의 프로그램만 실행하도록 허용하는 것입니다(기술적으로 뮤텍스라고 함). 프로그램이 백그라운드에서 시작됩니다. --wait모든 "sem"을 완료 하려면 :

sem 'sleep 1; echo The first finished' &&
    echo The first is now running in the background &&
    sem 'sleep 1; echo The second finished' &&
    echo The second is now running in the background
  sem --wait

제가 제공한 링크의 예를 보시면 원하는 것을 찾으실 수 있을 것입니다.

답변2

나는 종종 여러 다른 작업 그룹을 병렬로 실행합니다.

parallel do_stuff ::: x y z

그런 다음 이 작업을 실행하는 데 시간이 오래 걸린다는 것을 깨달았고 do_stuff터미널을 복원하고 싶어서 CTRL-Z를 누르고 다음을 입력했습니다.

bg

작업을 백그라운드에 두십시오.

그러면 다른 일을 시작할 수도 있습니다.

parallel do_other_stuff ::: foo bar baz

이번 신작은 와 함께합니다 do_stuff.

관련 정보