Come staccare una sessione tmux che già è in un tmux?


91

Ho aperto una sessione tmux sul mio computer locale e ssh sul computer remoto. Dopo questo, ho digitato il comando "tmux attach" sulla macchina remota, poi ho avuto una sessione tmux remota sulla mia sessione tmux locale.

Ora voglio staccare la sessione tmux remota, ci ho provato

C-b d

ma ha staccato la mia sessione tmux locale piuttosto che quella remota.

Come posso allegare la sessione tmux remota?

Risposte:


136
C-b C-b d

(assumendo le associazioni predefinite)

Il primo C-b è interpretato dal tuo locale tmux (perché è il primo a vedere tutte le tue battute). Il secondo C-b è un comando che fa sì che il tuo tmux locale invii un C-b al suo pannello attivo; questo generato C-b arriva al telecomando tmux . Il d passa attraverso il locale tmux invariato; quando arriva al telecomando tmux innesca il detach comando.

  1. Tu digiti C-b .
    Il tuo locale tmux lo interpreta come chiave del prefisso; nulla viene inviato ai processi in esecuzione nel locale tmux .
  2. Tu digiti C-b .
    Il tuo locale tmux ha legato al send-prefix comando.
    1. Il tuo locale tmux manda un C-b al processo in esecuzione nel riquadro attivo ( SSH ).
    2. SSH lo inoltra (attraverso sshd , ecc.) al processo in esecuzione sul terminale remoto (remoto tmux ).
      Il tuo telecomando tmux lo interpreta come chiave del prefisso; nulla viene inviato ai processi in esecuzione sotto il telecomando tmux .
  3. Tu digiti d .
    Il tuo locale tmux passa attraverso normalmente (dal momento che il secondo C-b terminata una sequenza completa di tasti di comando per il locale tmux ).
    Il tuo telecomando tmux ha legato a detach-client; stacca il client attivo.

È lo stesso di quando devi inviare un C-b a qualsiasi programma in esecuzione in a tmux sessione. Se volevi inviare C-b alla tua shell normale (ad esempio perché la tua shell sta usando la modifica in stile Emacs dove C-b è backward-char (e non ti piace usare i tasti freccia)) dovresti usare C-b C-b per ottenere un singolo C-b alla shell.


5
In alternativa, ho visto spesso l'uso di C-a C-a per saltare all'ultima finestra attiva. In tali circostanze, prova C-a a d staccare. Grazie!
mkelley33

2
Nota : la combo di cui ho parlato sopra sarebbe disponibile solo se il a la chiave è associata invece di b nel tmux.conf dell'utente.
mkelley33

Il mio tmux esterno usa C-a e quello interiore C-be per poter staccare dall'interno l'unica cosa che funziona per me è C-a C-b-b d, ma non capisco perché ho bisogno del secondo b
gcucurull

40

Un altro modo per farlo senza preoccuparsi delle combinazioni di tasti che lo rendono alla giusta istanza di tmux è quello di digitare tmux detach nella sessione remota di tmux.


5

Ho provato la prima risposta senza successo.

Sono stato in grado di ottenere i risultati che volevo facendo quanto segue:

tmux attach

Sono entrato in tmux e ho visto che l'altra sessione era ancora collegata

Così ho staccato la mia sessione corrente per tornare a una shell: Ctrl + b; d

Quindi ho emesso il seguente: tmux attach -d

Questo dice di collegarsi alla sessione predefinita e staccare tutte le altre sessioni attualmente collegate. Vedi la pagina man sotto Clienti e sessioni

attach-session [-dr] [-t sessione-obiettivo]                   (alias: allegare)   Se viene eseguito da fuori tmux, crea un nuovo client nel terminale corrente e collegalo a   target-sessione. Se usato dall'interno, cambia il client corrente. Se -d è specificato, qualsiasi altro   i client collegati alla sessione sono scollegati. -r significa che il client è di sola lettura (solo le chiavi vincolate   al comando detach-client hanno alcun effetto)


0

Se vuoi provare un'altra opzione segui i passaggi seguenti

  1. staccare la sessione corrente di tmux con Ctrl+b d . In modo che tu ora vai al normale prompt della riga di comando del terminale.
  2. Fai un tmux ls . Cerca la sessione correntemente allegata
  3. Esegui questo comando per staccare la sessione già collegata tmux detach-client -s <attached_session_name>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.