2011-02-24 03:10:27 +0000 2011-02-24 03:10:27 +0000
128
128

Como destacar uma sessão de tmux que já se encontra num tmux?

Abri uma sessão de tmux na minha máquina local, e ssh para a máquina remota. Depois disto, escrevi o comando “tmux attach” na máquina remota, depois recebi uma sessão de tmux remoto na minha sessão local de tmux.

Agora quero separar a sessão de tmux remoto, tentei

C-b d

mas separou a minha sessão de tmux local em vez da remota.

Como posso destacar a sessão de tmux remoto?

Respostas (4)

172
172
172
2011-02-24 04:21:36 +0000
C-b C-b d

(assumindo as ligações por defeito)

O primeiro C-b* é interpretado pelo seu tmux local (porque é o primeiro a ver todas as suas teclas). O segundo C-b* é um comando que faz com que o seu tmux local envie um C-b para o seu painel activo; este gerado C-b* chega ao remoto tmux. O d* passa através do tmux local inalterado; quando chega ao tmux remoto, desencadeia o comando detach.

  1. digita C-b*.
    O seu tmux local interpreta-o como a chave de prefixo; nada é enviado para os processos em execução sob o tmux local.
  2. Escreve C-b*.
    O seu tmux local tem a chave vinculada ao comando send-prefix.
  3. o seu tmux local envia um C-b para o processo em execução no painel activo (ssh).
  4. ssh encaminha-o (através de sshd, etc.) para o processo em execução no extremo remoto (remoto tmux).
    O seu tmux remoto interpreta-o como a chave de prefixo; nada é enviado para os processos que correm sob o tmux remoto.
  5. Escreve d.
    O seu tmux local passa por ele normalmente (desde o segundo *
    C-b*** terminou uma sequência completa de teclas de comando para o tmux local).
    O seu tmux remoto tem o comando vinculado a detach-client; ele separa o cliente activo.

Isto é o mesmo que quando é necessário enviar um C-b* a qualquer programa em execução dentro de uma sessão tmux. Se quisesse enviar C-b para a sua shell normal (por exemplo, porque a sua shell está a usar edição ao estilo Emacs onde C-b* é backward-char (e não gosta de usar as setas)) teria de usar C-b** C-b ** para obter um único** C-b** para a shell.

51
51
51
2011-09-24 12:00:19 +0000

Outra forma de o fazer sem se preocupar com as teclas que o ligam à instância certa do tmux é escrever tmux detach na sessão do tmux remoto.

8
8
8
2013-01-21 16:43:49 +0000

Tentei a primeira resposta sem sucesso.

Consegui obter os resultados que queria, fazendo o seguinte:

tmux attach

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

Por isso, separei a minha sessão actual para voltar a uma shell: Ctrl + b; d

Depois emiti o seguinte:tmux attach -d

Isto diz para anexar à sessão padrão, e separar todas as outras sessões actualmente anexadas. Ver a página man em Clientes e Sessões*

attach-session [-dr] -t target-session Se for executado a partir do tmux exterior, criar um novo cliente no terminal actual e anexá-lo à target-session. Se usado de dentro, troque o cliente actual. Se -d for especificado, quaisquer outros clientes ligados à sessão são destacados._ -r significa que o cliente é apenas de leitura (apenas as chaves ligadas ao comando detach-client têm algum efeito)

0
0
0
2018-03-12 06:28:47 +0000

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

  1. desprenda a sessão actual do tmux com Ctrl+b d . de modo a ir agora ao prompt de linha de comando normal do terminal.
  2. Faça uma sessão tmux ls& . procure a sessão que está actualmente anexada
  3. Execute este comando para destacar a sessão já anexada tmux detach-client -s <attached_session_name>& .