Existe um equivalente tmux de “screen -D -R”?

13

Eu gostaria de saber se existe uma maneira de fazer o tmux se comportar como screen -D -R , então eu poderia dizer, tenha o comando como um comando padrão no Putty.

Essas opções de screen forçariam a desanexação de uma sessão de tela existente para meu usuário (mesmo que ela ainda estivesse ativa e registrada em outro local) e a reconectariam à sessão atual. Além disso, no caso de não existir nenhuma sessão de tela, ela criaria uma nova.

Eu gosto do tmux e posso ver benefícios claros sobre a tela, mas a existência desse recurso realmente selaria o acordo.

tmux attach não parece criar uma nova sessão se não houver uma.

A página man do tmux diz:

If no server is started, attach-session (attach) will attempt to start it; this will fail unless sessions are created in the configuration file.

O que significa a seção em negrito? (Não consigo encontrar um exemplo de criação de uma sessão no arquivo conf).

    
por Geeb 05.03.2012 / 14:19

6 respostas

14

Sim:

$ tmux attach -d || tmux new

-d é necessário para se comportar como screen -D , ou seja, destacar todos os outros.

Conecte-se por ssh, em seguida, anexar ou criar pode ser algo como:

$ cat bin/stmux
#!/bin/sh
exec ssh -t $@ 'tmux attach -d || tmux new'

$ stmux my.remote.box
    
por 05.03.2012 / 16:08
5

Para fazer com que tmux attach crie uma nova sessão quando não houver uma, use a opção new-session no arquivo de configuração do tmux. Crie o arquivo ~/.tmux.conf se ele não existir e adicione

new-session

para isso. Além disso, eu alias tmux to tmux attach :)

    
por 05.03.2012 / 16:31
3

Você pode emular isso com uma função de shell, isso deve funcionar para qualquer shell compatível com POSIX:

tmux() {
    if [ "$#" -ge 1 ] && [ "$1" = -z ]; then
        shift
        command tmux detach 2>/dev/null
        command tmux attach "$@" || command tmux new-session "$@"
    else
        command tmux "$@"
    fi
}

Agora, se você iniciá-lo como tmux -z , ele deverá executar as ações que você está procurando.

    
por 05.03.2012 / 14:34
2

este funciona um pouco melhor para mim:

tmux new-session -AD -s <session-name>
    
por 21.10.2015 / 21:46
1

Acho que isso funciona melhor para mim no .bashrc

if [[ -z $TMUX ]]; then
  tmux attach-session || tmux new-session
fi
    
por 14.10.2013 / 07:20
0

Se você estiver usando isso em um arquivo .shrc ou similar com exec , recomendo

if tmux ls
  exec tmux attach
else
  exec tmux
fi
    
por 05.02.2016 / 23:56