Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've opened a tmux session on my local machine, and ssh to the remote machine. After this, I typed command "tmux attach" on the remote machine, then I got a remote tmux session on my local tmux session.
Now I want to detach the remote tmux sesstion, I've tried "C-b d", but it detached my local tmux session rather than the remote one.

How can I detach the remote tmux sesstion?

share|improve this question

3 Answers 3

up vote 27 down vote accepted
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.

  1. You type C-b.
    Your local tmux interprets it as the prefix key; nothing is sent to the processes running under the local tmux.
  2. You type C-b.
    Your local tmux has it bound to the send-prefix command.
    1. Your local tmux sends a C-b to the process running in the active pane (ssh).
    2. 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.
  3. 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 to detach-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.

share|improve this answer
    
Thanks, it works! –  superadmin Feb 24 '11 at 4:36
    
Alternatively, I've frequently seen the use of C-a C-a to jump to the last active window. Under such circumstances try C-a a d to detach. Thanks! –  mkelley33 Oct 25 '13 at 0:31
    
Note: the combo I mention above would only be available if the a key is bound instead of b in the user's tmux.conf. –  mkelley33 Oct 25 '13 at 0:42

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)

share|improve this answer

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.