tmux 세션에서 현재 터미널을 제외한 모든 터미널을 분리합니다.

tmux 세션에서 현재 터미널을 제외한 모든 터미널을 분리합니다.

tmux실제로 사용 중인 터미널을 제외하고 실행 중인 세션에서 모든 터미널을 분리하는 방법이 있습니까 ?

이것은 다소 이상하게 보일 수 있지만, 이것의 요점은 최종 사용자 원격 세션에 대해 일부 "지속성" 계층을 유지하면서 사용자가 "하나의 셸"에서만 시스템을 사용하도록 보장하는 것입니다.

설명대로여기, 사용자 이름을 기반으로 세션을 만드는 것은 쉽습니다.

if [[ "$TMUX" == "" ]] &&
        [[ "$SSH_CONNECTION" != "" ]]; then
    # Attempt to discover a detached session and attach
    # it, else create a new session
    WHOAMI=$(whoami)
    if tmux has-session -t $WHOAMI 2>/dev/null; then
    tmux -2 attach-session -t $WHOAMI
    else
        tmux -2 new-session -s $WHOAMI
    fi
fi

하지만 마지막으로 연결된 터미널이 사용자 tmux세션에 계속 연결되어 있는 유일한 터미널인지도 확인하고 싶습니다.

이를 달성할 수 있는 방법이 있나요? 또한 screen(또는 다른 멀티플렉서) 기반 솔루션 도 허용합니다 .)

답변1

귀하의 질문을 올바르게 이해했다면 원하는 대로 수행할 수 있는 -d옵션이 있습니다.attach-session

tmux -2 attach-session -d -t $WHOAMI

그러면 지정된 대상 세션에 연결되고 다른 모든 클라이언트가 분리됩니다.

세션을 연결한 후 및 옵션을 사용하여 유사한 작업을 수행할 수 있습니다 detach-client. 즉, 명명된 클라이언트를 사용하고 지정된 클라이언트를 제외한 모든 클라이언트를 분리하려면 추가하세요.-a-t-t-a

screen-d동일한 작업을 수행하는 옵션 도 있습니다 .

관련 정보