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

Hoe ontkoppel ik een tmux sessie die zelf al in een tmux zit?

Ik heb een tmux-sessie geopend op mijn lokale machine, en ssh naar de machine op afstand. Hierna typte ik commando “tmux attach” op de machine op afstand, toen kreeg ik een tmux sessie op afstand op mijn lokale tmux sessie.

Nu wil ik de remote tmux sessie ontkoppelen, ik heb geprobeerd

C-b d

maar het ontkoppelde mijn lokale tmux sessie in plaats van de remote sessie.

_Hoe kan ik de remote tmux sesstion ontkoppelen?

Antwoorden (4)

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

(uitgaande van standaard bindingen)

De eerste C-b wordt geïnterpreteerd door uw lokale tmux (omdat deze als eerste al uw toetsaanslagen ziet). De tweede C-b is een commando dat ervoor zorgt dat uw lokale tmux een C-b stuurt naar zijn actieve deelvenster; deze gegenereerde C-b komt aan bij de tmux op afstand. De d passeert de lokale tmux ongewijzigd; wanneer hij bij de remote tmux aankomt, activeert hij het commando detach.

  1. Je typt C-b.
    Je lokale tmux interpreteert het als de prefix-sleutel; er wordt niets verzonden naar de processen die onder de lokale tmux draaien.
  2. Je typt C-b.
    Je lokale tmux heeft het gebonden aan het commando send-prefix.
  3. Je lokale tmux zendt een C-b naar het proces dat draait in het actieve deelvenster (ssh).
  4. ssh stuurt het door (via sshd, enz.) naar het proces dat op het andere eind draait (remote tmux).
    Uw remote tmux interpreteert het als de prefix-sleutel; er wordt niets verzonden naar de processen die onder de remote tmux draaien.
  5. Je typt d.
    Je lokale tmux geeft het normaal door (omdat de tweede C-b een volledige commando-toets-sequentie voor de lokale tmux afmaakte).
    Je remote tmux heeft het gebonden aan detach-client; het ontkoppelt de actieve client.

Dit is hetzelfde als wanneer je een C-b moet sturen naar een programma dat binnen een tmux sessie draait. Als je C-b naar je normale shell wilt sturen (bijvoorbeeld omdat je shell Emacs-stijl editing gebruikt waarbij C-b backward-char is (en je er een hekel aan hebt om de pijltjestoetsen te gebruiken), dan zou je C-b** C-b ** moeten gebruiken om een enkele** C-b** naar de shell te sturen.

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

Een andere manier om het te doen zonder dat u zich zorgen hoeft te maken of de keybindings wel bij de juiste tmux-instantie terechtkomen, is door tmux detach te typen in de tmux-sessie op afstand.

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

Ik probeerde het eerste antwoord zonder succes.

Ik was in staat om de resultaten te krijgen die ik wilde door het volgende te doen:

tmux attach

Ik ging naar tmux en zag dat de andere sessie nog steeds aangekoppeld was

Dus maakte ik mijn huidige sessie los om terug te gaan naar een shell: Ctrl + b; d

Toen gaf ik het volgende uit:tmux attach -d

Dit zegt dat ik moet aankoppelen aan de standaard sessie, en alle andere sessies die momenteel aangekoppeld zijn moet loskoppelen. Zie de man page onder Clients and Sessions

attach-session [-dr] -t target-session Indien het van buiten tmux wordt gebruikt, maakt het een nieuwe client aan in de huidige terminal en koppelt deze aan target-session. Indien gebruikt van binnenuit, schakelt de huidige client. Als -d is opgegeven, worden alle andere clients die aan de sessie zijn gekoppeld losgekoppeld. _ -r betekent dat de client alleen-lezen is (alleen toetsen die zijn gekoppeld aan het commando detach-client hebben effect)

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

Als je een andere optie wilt proberen, volg dan onderstaande stappen

  1. Ontkoppel de huidige tmux sessie met Ctrl+b d . Zodat je nu naar de normale terminal command line prompt gaat.
  2. Voer een tmux ls uit. Zoek naar de sessie die momenteel is aangesloten
  3. Voer dit commando uit om de reeds aangekoppelde sessie los te koppelen tmux detach-client -s <attached_session_name>