The commands I actually use. The main use case: a long-running command on a
remote host that must survive the SSH connection dying.
Ctrl-b is the prefix. Notation C-b d = press Ctrl-b, release, then press d.
Survive a dropped SSH connection
tmux new -s work # start a named session
# ... launch your long-running command inside ...
# C-b d # detach — command keeps running on the server
# (connection can now die safely)
tmux attach -t work # reattach later
tmux attach -d -t work # force-attach, detaching any stale client
Sessions
| Action |
Command / keys |
| New named session |
tmux new -s NAME |
| List sessions |
tmux ls |
| Attach to one |
tmux attach -t NAME |
| Force attach (kick others) |
tmux attach -d -t NAME |
| Detach (from inside) |
C-b d |
| Rename session |
C-b $ |
| Kill a session |
tmux kill-session -t NAME |
| Kill the server (all) |
tmux kill-server |
| Switch session (inside) |
C-b s then arrows |
Windows (like tabs)
| Action |
Keys |
| New window |
C-b c |
| Next / previous |
C-b n / C-b p |
| Go to window N |
C-b 0…9 |
| Rename window |
C-b , |
| Close window |
C-b & (or just exit) |
| List / pick window |
C-b w |
Panes (splits)
| Action |
Keys |
| Split vertical (left/right) |
C-b % |
| Split horizontal (top/bottom) |
C-b " |
| Move between panes |
C-b + arrow keys |
| Cycle panes |
C-b o |
| Toggle zoom (fullscreen pane) |
C-b z |
| Close pane |
C-b x (or exit) |
| Convert pane to window |
C-b ! |
| Action |
Keys |
| Enter scroll/copy mode |
C-b [ |
| Scroll |
arrows / PgUp / PgDn |
| Search up / down |
? / / (in copy mode) |
| Quit copy mode |
q |
Handy
| Action |
Keys |
| Command prompt |
C-b : |
| List all key bindings |
C-b ? |
| Reload config |
C-b : then source-file ~/.tmux.conf |
Watch a long job after reattaching
tail -f my-long-job-*.log # Ctrl-c to stop tailing (job keeps running)
Minimal ~/.tmux.conf niceties (optional)
set -g history-limit 100000 # bigger scrollback
set -g mouse on # mouse scroll/select panes
setw -g mode-keys vi # vi keys in copy mode