나는 가지고있다
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
.