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

Come staccare una sessione tmux che si trova già in un tmux?

Ho aperto una sessione tmux sulla mia macchina locale, e ssh alla macchina remota. Dopo questo, ho digitato il comando “tmux attach” sulla macchina remota, poi ho ottenuto una sessione tmux remota sulla mia sessione tmux locale.

Ora voglio staccare la sessione tmux remota, ho provato

C-b d

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

_Come posso staccare la sessione remota di tmux?

Risposte (4)

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

(assumendo binding di default)

Il primo C-b è interpretato dal tuo tmux locale (perché è il primo a vedere tutti i tuoi tasti premuti). Il secondo C-b è un comando che fa sì che il vostro tmux locale invii un C-b al suo pannello attivo; questo C-b generato arriva al tmux remoto. Il d passa attraverso il tmux locale invariato; quando arriva al tmux remoto innesca il comando detach.

  1. Voi digitate C-b.
    Il vostro tmux locale lo interpreta come chiave di prefisso; nulla viene inviato ai processi in esecuzione sotto il tmux locale.
  2. Voi digitate C-b.
    Il vostro tmux locale lo ha legato al comando send-prefix.
  3. Il vostro tmux locale invia un C-b al processo in esecuzione nel pannello attivo (ssh).
  4. ssh lo inoltra (attraverso sshd, ecc.) al processo in esecuzione sul lato remoto (tmux remoto).
    Il tmux remoto lo interpreta come chiave di prefisso; nulla viene inviato ai processi in esecuzione sotto il tmux remoto.
  5. Voi digitate d.
    Il vostro tmux locale lo fa passare normalmente (poiché il secondo C-b ha finito una sequenza di tasti di comando completa per il tmux locale).
    Il tuo tmux remoto lo ha legato a detach-client; stacca il client attivo.

Questo è lo stesso di quando dovete inviare un C-b a qualsiasi programma in esecuzione dentro una sessione tmux. Se volete inviare C-b alla vostra normale shell (ad esempio perché la vostra shell sta usando l'editing in stile Emacs dove C-b è backward-char (e non vi piace usare i tasti freccia)) dovreste usare C-b** C-b per ottenere un singolo C-b** alla shell.

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

Un altro modo per farlo senza preoccuparsi che i keybindings arrivino all'istanza giusta di tmux è quello di digitare tmux detach nella sessione remota di tmux.

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

Ho provato la prima risposta senza successo.

Sono riuscito a ottenere i risultati che volevo facendo quanto segue:

tmux attach

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

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

Poi ho emesso il seguente:tmux attach -d

Questo dice di attaccare alla sessione di default, e staccare tutte le altre sessioni attualmente attaccate. Vedere la pagina man sotto Clients and Sessions

attach-session [-dr] -t target-session Se eseguito dall'esterno di tmux, crea un nuovo client nel terminale corrente e lo collega a target-session. Se usato dall'interno, cambia il client corrente. Se viene specificato -d, qualsiasi altro client collegato alla sessione viene staccato._ -r significa che il client è di sola lettura (solo le chiavi legate al comando detach-client hanno effetto)

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

Se volete provare un'altra opzione seguite i seguenti passi

  1. staccate la sessione corrente di tmux con Ctrl+b d . In modo che ora andiate al normale prompt della riga di comando del terminale.
  2. Eseguite un comando tmux ls . Cercate la sessione che è attualmente collegata
  3. Eseguite questo comando per staccare la sessione già collegata tmux detach-client -s <attached_session_name>