다른 프로세스가 완료되면 tail 종료

다른 프로세스가 완료되면 tail 종료

나는 가지고있다

parallel --j 2 -- "sh script1" "sh script2"

로그인 파일의 위치 script1script2log1log2

나는 그것을 다음과 같이 바꾸고 싶습니다 :

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.

관련 정보