Questão Como desanexar uma sessão do tmux que já está em um tmux?


Eu abri uma sessão do tmux na minha máquina local e o ssh para a máquina remota. Depois disso, eu digitei comando "tmux attach" na máquina remota, então eu tenho uma sessão tmux remota na minha sessão tmux local.

Agora eu quero desanexar a sessão remota do tmux, eu tentei

C-b d

mas desanexou minha sessão tmux local em vez da remota.

Como posso desanexar a sessão remota do tmux?


78


origem




Respostas:


C-b C-b d

(assumindo ligações padrão)

O primeiro C-b é interpretado pelo seu local tmux (porque é o primeiro a ver todas as suas teclas digitadas). O segundo C-b é um comando que faz com que o seu tmux local envie um C-b ao seu painel ativo; isso gerou C-b chega ao controle remoto tmux. o d passa pelo local tmux inalterado; quando chega ao controle remoto tmux desencadeia o detach comando.

  1. Você digita C-b.
    Seu local tmux interpreta como chave de prefixo; nada é enviado para os processos em execução sob o local tmux.
  2. Você digita C-b.
    Seu local tmux tem ligado ao send-prefix comando.
    1. Seu local tmux envia um C-b para o processo em execução no painel ativo (ssh).
    2. ssh encaminha-o (através de sshd, etc.) para o processo em execução no terminal remoto tmux).
      Seu controle remoto tmux interpreta como chave de prefixo; nada é enviado para os processos em execução sob o controle remoto tmux.
  3. Você digita d.
    Seu local tmux passa-o normalmente (desde o segundo C-b terminou uma seqüência de teclas de comando completa para o local tmux).
    Seu controle remoto tmux tem que vincular detach-client; desanexa o cliente ativo.

É o mesmo que quando você precisa enviar um C-b para qualquer programa em execução dentro de um tmux sessão. Se você quisesse enviar C-b ao seu shell normal (por exemplo, porque seu shell está usando a edição no estilo Emacs C-b é backward-char (e você não gosta de usar as teclas de setas)) você precisaria usar C-b  C-b para obter um único C-b para o shell.


119



Alternativamente, tenho visto frequentemente o uso de C-a C-a para pular para a última janela ativa. Sob tais circunstâncias, tente C-a a d para separar. Obrigado! - mkelley33
Nota: o combo que eu mencionei acima só estaria disponível se o a chave está ligada em vez de b no tmux.conf do usuário. - mkelley33
Meu tmux externo usa C-a e o interior C-b, e para ser capaz de separar do interior, a única coisa que funciona para mim é C-a C-b-b d, mas eu não entendo porque eu preciso do segundo b - gcucurull


Outra maneira de fazê-lo sem se preocupar com as combinações de teclas que o tornam na instância certa do tmux é digitar tmux detach na sessão remota do tmux.


36





Eu tentei a primeira resposta sem sucesso.

Consegui obter os resultados desejados, fazendo o seguinte:

tmux attach

Entrei no tmux e vi que a outra sessão ainda estava anexada

Então, desanexei minha sessão atual para voltar a um shell: Ctrl + b; d

Então eu emiti o seguinte: tmux attach -d 

Isso diz para anexar à sessão padrão e desanexar todas as outras sessões atualmente anexadas. Veja a página man abaixo Clientes e Sessões

anexar sessão [-dr] [-t target-session]                   (alias: anexar)   Se for executado a partir do tmux externo, crie um novo cliente no terminal atual e anexe-o ao   sessão-alvo. Se usado de dentro, troque o cliente atual. Se -d for especificado, qualquer outro   os clientes anexados à sessão são desanexados.  -r significa que o cliente é somente leitura (somente chaves ligadas   para o comando detach-client tem algum efeito)


4





Se você quiser tentar uma outra opção, siga os passos abaixo

  1. desanexar a sessão atual do tmux com Ctrl+b d . Então agora você vai para o prompt normal da linha de comando do terminal.
  2. Faça um tmux ls . Procure a sessão atualmente anexada
  3. Execute este comando para desanexar a sessão já anexada tmux detach-client -s <attached_session_name>

0