Inicie o shell com o tmux e anexe-o apenas a uma sessão se estiver desanexado

2

Atualmente estou iniciando o tmux ao abrir meu shell, que a seguinte configuração para o meu shell

[[ $TMUX == "" ]] && tmux new-session

Existe alguma maneira de iniciar meu shell e anexar o tmux à (primeira) sessão desacompanhada, se houver uma? Se um shell já estiver anexado a essa sessão, não quero me conectar a ele.

    
por Sergej Herbert 04.10.2018 / 21:03

1 resposta

1

Acho que você pode conseguir o que procura usando um formato apropriado com tmux list-session e analisando a saída:

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

O formato aqui para tmux ls fornece, para cada sessão, o número de clientes anexados, a hora em que foi anexado pela última vez (ou 1 se nunca anexado antes, como após tmux new -d ) e ID da sessão. O script AWK usa essas informações para localizar a sessão anexada mais recentemente sem nenhum cliente atualmente conectado e exibe seu ID. Em seguida, anexamos a essa sessão ou criamos uma nova, se essa sessão não for encontrada, como quando o servidor não é iniciado ou quando todas as sessões existentes são anexadas.

    
por 05.10.2018 / 09:04