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

Jak odłączyć sesję tmuxa, która jest już w tmuxie?

Advertisement

Otworzyłem sesję tmux na moim lokalnym komputerze, i ssh do zdalnego komputera. Następnie wpisałem komendę “tmux attach” na zdalnej maszynie, po czym otrzymałem zdalną sesję tmux na mojej lokalnej sesji tmux.

Teraz chcę odłączyć zdalną sesję tmux, próbowałem

C-b d

ale odłączyło to moją lokalną sesję tmux zamiast zdalnej.

_Jak mogę odłączyć zdalną sesję tmux?

Advertisement
Advertisement

Odpowiedzi (4)

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

(zakładając domyślne wiązania)

Pierwszy C-b jest interpretowany przez twój lokalny tmux (ponieważ jest pierwszym, który widzi wszystkie twoje naciśnięcia klawiszy). Drugi C-b jest komendą, która powoduje, że lokalny tmux wysyłaC-b do swojego aktywnego panelu; ten wygenerowany C-b dociera do zdalnego tmux. d przechodzi przez lokalny tmux bez zmian; kiedy dociera do zdalnego tmux, wywołuje komendę detach.

  1. Wpisujesz C-b.
    Twój lokalny tmux interpretuje to jako klucz prefiksu; nic nie jest wysyłane do procesów działających pod lokalnym tmux.
  2. Wpisujesz C-b.
    Twój lokalny tmux ma to związane z komendą send-prefix.
  3. Twój lokalny tmux wysyła C-b do procesu uruchomionego w aktywnym panelu (ssh).
  4. ssh przekazuje go (poprzez sshd, itd.) do procesu działającego na zdalnym końcu (zdalny tmux).
    Twój zdalny tmux interpretuje to jako klucz prefiksu; nic nie jest wysyłane do procesów działających pod zdalnym tmux.
  5. Wpisujesz d.
    Twój lokalny tmux przepuszcza to normalnie (ponieważ drugi C-b zakończył pełną sekwencję klawiszy poleceń dla lokalnego tmux).
    Twój zdalny tmux ma to związane z detach-client; odłącza aktywnego klienta.

To jest to samo, co w przypadku, gdy musisz wysłać C-b do dowolnego programu działającego wewnątrz sesji tmux. Jeśli chciałbyś wysłaćC-b do swojej normalnej powłoki (np. ponieważ twoja powłoka używa edycji w stylu Emacsa, gdzie C-b jest backward-char (a ty nie lubisz używać klawiszy strzałek)), musiałbyś użyć C-b** C-b aby uzyskać pojedyncze C-b** do powłoki.

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

Innym sposobem na zrobienie tego bez martwienia się o przypisanie klawiszy do właściwej instancji tmuxa jest wpisanie tmux detach w zdalnej sesji tmuxa.

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

Próbowałem pierwszej odpowiedzi bez powodzenia.

Byłem w stanie uzyskać wyniki, które chciałem, wykonując następujące czynności:

tmux attach

Wszedłem do tmux i zobaczyłem, że druga sesja wciąż była dołączona

Więc odłączyłem moją bieżącą sesję, aby wrócić do powłoki: Ctrl + b; d

Następnie wydałem następujące:tmux attach -d

To mówi, aby dołączyć do domyślnej sesji i odłączyć wszystkie inne sesje aktualnie dołączone. Zobacz stronę man pod Clients and Sessions

attach-session [-dr] -t target-session Jeśli uruchomione z zewnątrz tmuxa, utworzy nowego klienta w bieżącym terminalu i dołączy go do target-session. Jeśli używane z wewnątrz, przełącz bieżącego klienta. Jeśli podano -d, wszystkie inne klienty dołączone do sesji są odłączane. -r oznacza, że klient jest tylko do odczytu (tylko klucze związane z poleceniem detach-client mają jakikolwiek efekt)

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

Jeśli chcesz spróbować innej opcji, wykonaj poniższe kroki

  1. odłącz bieżącą sesję tmux za pomocą Ctrl+b d . Tak, że teraz przejdziesz do normalnego terminala wiersza poleceń.
  2. Wykonaj polecenie tmux ls . Poszukaj sesji, która jest aktualnie podłączona
  3. Wykonaj tę komendę, aby odłączyć już dołączoną sesję tmux detach-client -s <attached_session_name>
Advertisement