하위 tmux 프로세스에서 트랩을 사용하는 방법은 무엇입니까?

하위 tmux 프로세스에서 트랩을 사용하는 방법은 무엇입니까?

하위 tmux 프로세스가 종료되면 함수를 실행하고 싶습니다.

다음 스크립트를 고려해보세요.

#!/bin/bash

function foo
{
  echo "foo exit"
}

trap foo SIGHUP

tmux

이 스크립트는 tmux를 시작합니다. 그런 다음 tmux 세션 내에서 다음을 실행합니다.

$ tmux kill-session

그런 다음 tmux가 닫히고 다음이 표시됩니다.

[exited]

함수가 foo호출되지 않았습니다. 상위 프로세스가 SIGHUP 신호를 수신하지 않았기 때문인 것 같습니다.

foo종료 시 이 기능이 실행되기를 원합니다 . tmux이 목표를 어떻게 달성할 수 있나요?

답변1

신호를 로 바꿔야 합니다 SIGCHLD.

trap foo SIGCHLD

분기된 하위 프로세스가 중지/종료되면 이 신호가 상위 프로세스로 전송됩니다. 언급했듯이 SIGHUP현재 프로세스/스크립트에만 영향을 미칩니다.

관련 정보