How to detach a tmux session that itself already in a tmux?
C-b C-b d
(assuming default bindings)
The first C-b is interpreted by your local tmux (because it is the first to see all your keystrokes). The second C-b is a command that causes your local tmux to send a C-b to its active pane; this generated C-b arrives at the remote tmux. The d passes through the local tmux unchanged; when it gets to the remote tmux it triggers the detach
command.
- You type C-b.
Your local tmux interprets it as the prefix key; nothing is sent to the processes running under the local tmux. - You type C-b.
Your local tmux has it bound to thesend-prefix
command.- Your local tmux sends a C-b to the process running in the active pane (ssh).
- ssh forwards it (through sshd, etc.) to the process running on the remote end (remote tmux).
Your remote tmux interprets it as the prefix key; nothing is sent to the processes running under the remote tmux.
- You type d.
Your local tmux passes it through normally (since the second C-b finished a full command key sequence for the local tmux).
Your remote tmux has it bound todetach-client
; it detaches the active client.
This is the same as when you need to send a C-b to any program running inside a tmux session. If you wanted to send C-b to your normal shell (e.g. because your shell is using Emacs-style editing where C-b is backward-char
(and you dislike using the arrow keys)) you would need to use C-b C-b to get a single C-b to the shell.
Another way to do it without worrying about the keybindings making it to the right tmux instance is to type tmux detach
in the remote tmux session.
I tried the first answer without success.
I was able to get the results I wanted by doing the following:
tmux attach
I entered tmux and saw the other session was still attached
So I detached my current session to get back to a shell: Ctrl + b; d
Then I issued the following:
tmux attach -d
This says to attach to the default session, and detach all other sessions currently attached. See the man page under Clients and Sessions
attach-session [-dr] [-t target-session] (alias: attach) If run from outside tmux, create a new client in the current terminal and attach it to target-session. If used from inside, switch the current client. If -d is specified, any other clients attached to the session are detached. -r signifies the client is read-only (only keys bound to the detach-client command have any effect)