백그라운드에서 GNU Parallel을 시작하거나 어떻게든 백그라운드로 보낼 수 있습니까?
parallel
동시에 두 개의 명령을 실행할 수 있도록 이 작업을 수행하고 싶습니다 .
하나의 병렬 명령으로 모든 작업을 수행하면 안 되는 이유는 무엇입니까? 두 가지 이유:
- 병렬 속도는 잠시 후 느려지고,
- 모든 것을 중단하지 않고 한 그룹의 실행을 중단할 수 있도록 분리하고 싶기 때문입니다.
답변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
.