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

82

Eu abri uma sessão do tmux em 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 ele desconectou minha sessão tmux local em vez da remota.

Como posso desanexar a sessão remota do tmux?

    
por superadmin 24.02.2011 / 04:10

4 respostas

124
C-b C-b d

(assumindo ligações padrão)

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

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

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

    
por 24.02.2011 / 05:21
38

Outra maneira de fazer isso sem se preocupar com os atalhos de teclado que estão na instância certa do tmux é digitar tmux detach na sessão remota do tmux.

    
por 24.09.2011 / 14:00
4

Eu tentei a primeira resposta sem sucesso.

Consegui obter os resultados desejados ao fazer o seguinte:

tmux attach

Eu entrei no tmux e vi que a outra sessão ainda estava conectada

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 de manual em Clientes e sessões

attach-session [-dr] [-t target-session] (alias: attach) If run from outside tmux, create a new client in the current terminal and attach it to target-session. If used from inside, switch the current client. If -d is specified, any other clients attached to the session are detached. -r signifies the client is read-only (only keys bound to the detach-client command have any effect)

    
por 21.01.2013 / 17:43
0

Se você quiser tentar outra opção, siga as etapas 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>
por 12.03.2018 / 07:28

Tags