나는 가지고있다
parallel --j 2 -- "sh script1" "sh script2"
로그인 파일의 위치 script1
와script2
log1
log2
나는 그것을 다음과 같이 바꾸고 싶습니다 :
parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"
tail을 사용하는 이유는 두 개의 스크립트를 동시에 화면에 출력하도록 허용하면 출력이 엉망이 되고 커서가 사라지는 등의 문제입니다. - 거의 모든 실행 후에 터미널을 다시 시작해야 합니다.
하지만 문제는 이제 이것이 영원히 계속될 것이고 script1과 script2가 완료되면 tail이 종료되기를 원한다는 것입니다. 어떻게 해야 하나요?
답변1
이건 아마반품원하는 것은 아니지만 어떻습니까?
parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2
tail
이 두 가지 작업이 완료되면 두 개의 로그 파일을 기다리지 않아도 됩니다 .
답변2
실제로 내가 해야 할 일을 찾았습니다.
parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2
답변3
답변4
parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2
이것은 parallel ...
백그라운드에서 실행된 다음 실행됩니다 tail ...
.
Ctrl-C꼬리를 누르면 parallel
작업에 영향을 미치지 않습니다.
parallel
전경 으로 가져와야 하는 경우에는 kill tail
하고 Enter를 누르십시오 fg
. 다시 백그라운드로 보내려면( tail
예를 들어 다시 실행할 수 있도록) 키를 누르고 Ctrl-Z를 입력합니다 bg
. 아니면 다음 명령으로 죽일 수도 있습니다kill %%
자세한 내용은 셸 설명서를 참조하세요. 예를 들어, bash를 사용하는 경우 man bash
(all-caps) 를 실행하고 검색하세요 JOB CONTROL
.