![tmux를 사용하여 셸을 시작하고 연결되지 않은 세션에만 연결](https://linux55.com/image/12046/tmux%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%85%B8%EC%9D%84%20%EC%8B%9C%EC%9E%91%ED%95%98%EA%B3%A0%20%EC%97%B0%EA%B2%B0%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EC%84%B8%EC%85%98%EC%97%90%EB%A7%8C%20%EC%97%B0%EA%B2%B0.png)
현재 쉘을 열 때 tmux를 시작합니다. 내 쉘에 대한 구성은 다음과 같습니다.
[[ $TMUX == "" ]] && tmux new-session
내 쉘을 시작하고 연결되지 않은 (첫 번째) 세션이 있는 경우 tmux를 연결하는 방법이 있습니까? 쉘이 이미 연결되어 있으면 세션에 연결하고 싶지 않습니다.
답변1
적절한 형식을 사용하고 출력을 구문 분석하면 tmux list-session
원하는 것을 얻을 수 있다고 생각합니다.
if [ -z "$TMUX" ]; then
attach_session=$(tmux 2> /dev/null ls -F \
'#{session_attached} #{?#{==:#{session_last_attached},},1,#{session_last_attached}} #{session_id}' |
awk '/^0/ { if ($2 > t) { t = $2; s = $3 } }; END { if (s) printf "%s", s }')
if [ -n "$attach_session" ]; then
tmux attach -t "$attach_session"
else
tmux
fi
fi
여기 형식은 tmux ls
세션당 연결된 클라이언트 수, 마지막 연결 시간(이전에 연결되지 않은 경우 1, 예: 이후 tmux new -d
) 및 세션 ID를 제공합니다. AWK 스크립트는 이 정보를 사용하여 현재 연결되지 않은 클라이언트에 대해 가장 최근에 연결된 세션을 찾고 해당 ID를 인쇄합니다. 그런 다음 해당 세션에 연결하거나 서버가 시작되지 않거나 모든 기존 세션을 연결하는 등 해당 세션을 찾을 수 없는 경우 새 세션을 만듭니다.