두 백그라운드 프로세스의 인터리브된 출력을 구별하는 방법

두 백그라운드 프로세스의 인터리브된 출력을 구별하는 방법

STDOUT 또는 STDERR에 대한 입력을 생성하는 두 개의 백그라운드 프로세스(예: 두 개의 설치 스크립트)가 있는 경우 두 출력 스트림을 쉽게 구별할 수 있는 방법이 있습니까? 각 출력 행에 다른 레이블을 붙인 sed 프로그램을 통해 각 프로세스의 출력을 파이프할 수 있다고 가정하지만 더 간단한 것을 찾고 있습니다.

답변1

가장 간단한 해결책은 두 개의 백그라운드 작업을 시작하고 해당 출력을 파일로 리디렉션하는 것입니다.

 utility1 >utility1.out 2>utility1.err &
 utility2 >utility2.out 2>utility2.err &

이것의 또 다른 이점은 출력으로 인해 터미널이 막히지 않는다는 것입니다.

분명히 오류 스트림과 출력 스트림을 동일한 파일로 리디렉션할 수도 있습니다.

 utility1 >utility1.out 2>&1 &
 utility2 >utility2.out 2>&1 &

다음을 사용할 수도 있습니다 tmux.

 tmux new "utility1" ';' split "utility2"

tmux모든 명령은 종료 후 즉시 종료됩니다. 이를 방지하려면 "utility"로 변경하십시오 "utility;read". 이렇게 하면 를 누를 때까지 창이 열린 상태로 유지됩니다 Enter.

관련 정보