다른 TMUX 창에서 시작된 프로세스를 동기화하는 방법은 무엇입니까?

다른 TMUX 창에서 시작된 프로세스를 동기화하는 방법은 무엇입니까?

생각해 보세요:

tmux split-window -d program1
program2 # this program depends on some side effects produced by program1

이 경우 program2준비가 되기 전에 시작됩니다 program1. program1소비될 수 있는 부작용이 생성되면 신호/출력이 전송됩니다 program2.

program1내 질문: 시작하기 전에 준비가 될 때까지 기다리는 쉘 스크립트를 어떻게 작성합니까 program2?

관찰: 출력이 소비되지 program2않으므로 program1프로세스를 파이프로 연결하여 이 문제를 해결할 수 없습니다.

답변1

해결책을 찾았습니다여기. 마지막으로, 이는 TMUX 솔루션이 아닙니다(처음에는 tmux가 해당 창에서 실행 중인 프로세스를 동기화하는 메커니즘을 갖고 있을 것이라고 생각했습니다).

대답은 명명된 파이프를 사용하는 것입니다. 준비가 되면 출력이 전송 되므로 program1필요한 것은 다음과 같습니다.

mkfifo /tmp/pipe
tmux split-window -d "program1 > /tmp/pipe 2>&1"
signal=`cat /tmp/pipe`
program2 # This will only run after program1 has output something

답변2

다음과 같은 도구를 사용하세요.FLOM(무료 잠금 관리자)다음과 같은 작업을 수행할 수 있어야 합니다.

tmux split-window -d "flom -- program1"
flom -- program2 # this program depends on some side effects produced by program1

"program1"이 "program2"보다 먼저 시작되면 예상되는 동작은 다음과 같습니다.

  1. flom은 논리적 리소스를 생성하고 "program1"에 대해 특별히 잠급니다.
  2. flom은 "program2"와 동일한 논리적 리소스에 대기하고 "program1"이 종료될 때까지 기다립니다.

관련 정보