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

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

나는 가지고있다

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을(를 ) 전경으로 가져와야 하는 경우 을(를) 종료 tail하고 를 입력 하세요 fg. 다시 백그라운드로 보내려면(예: tail한 번 더 실행할 수 있도록) 키를 누르고 Ctrl-Z를 입력합니다 bg. 아니면 당신은 그것을 죽일 수 있습니다kill %%

자세한 내용은 셸 설명서를 참조하세요. 예를 들어 bash를 사용하는 경우 man bash(all-caps) 를 실행하고 검색하세요 JOB CONTROL.

관련 정보