tmux(Terminal Multiplexer)는 하나의 터미널 창에서 여러 세션·윈도우·패널을 관리할 수 있는 도구다.
SSH 접속이 끊겨도 세션이 살아 있어 서버 작업에 필수적이다.
📌 기본 개념
Session ─┬─ Window 1 ─┬─ Pane 1
│ └─ Pane 2
└─ Window 2 ─── Pane 1
| 개념 |
설명 |
| Session |
tmux의 최상위 단위. 독립적으로 유지됨 |
| Window |
세션 안의 탭. 전체 화면을 차지 |
| Pane |
윈도우를 분할한 작은 터미널 영역 |
Prefix 키: 기본값 Ctrl + b (이후 <prefix>로 표기)
🚀 세션 (Session)
터미널에서 (tmux 밖)
tmux # 새 세션 시작
tmux new -s my-session # 이름 지정해서 새 세션 시작
tmux ls # 세션 목록 확인
tmux attach # 마지막 세션에 재접속
tmux attach -t my-session # 특정 세션에 재접속
tmux kill-session -t my-session # 세션 종료
tmux kill-server # 모든 세션 종료
tmux 안에서
| 단축키 |
동작 |
<prefix> d |
세션 detach (세션은 백그라운드에서 유지) |
<prefix> s |
세션 목록 보기 및 전환 |
<prefix> $ |
현재 세션 이름 변경 |
<prefix> ( |
이전 세션으로 이동 |
<prefix> ) |
다음 세션으로 이동 |
🪟 윈도우 (Window)
| 단축키 |
동작 |
<prefix> c |
새 윈도우 생성 |
<prefix> , |
현재 윈도우 이름 변경 |
<prefix> w |
윈도우 목록 보기 및 전환 |
<prefix> n |
다음 윈도우로 이동 |
<prefix> p |
이전 윈도우로 이동 |
<prefix> 0~9 |
번호로 윈도우 이동 |
<prefix> & |
현재 윈도우 닫기 (확인 필요) |
<prefix> l |
마지막으로 사용한 윈도우로 이동 |
▪️ 패널 (Pane)
분할
| 단축키 |
동작 |
<prefix> % |
좌우(수직) 분할 |
<prefix> " |
상하(수평) 분할 |
이동
| 단축키 |
동작 |
<prefix> ←↑→↓ |
방향키로 패널 이동 |
<prefix> o |
순서대로 다음 패널로 이동 |
<prefix> ; |
이전 패널로 이동 |
<prefix> q |
패널 번호 표시 (번호 입력 시 이동) |
크기 조정
| 단축키 |
동작 |
<prefix> Ctrl+←↑→↓ |
방향키 방향으로 크기 조정 |
<prefix> z |
패널 최대화 / 원복 (zoom toggle) |
<prefix> ! |
패널을 새 윈도우로 분리 |
레이아웃
| 단축키 |
동작 |
<prefix> Space |
레이아웃 순환 (even-horizontal → even-vertical → main-horizontal 등) |
닫기
| 단축키 |
동작 |
<prefix> x |
현재 패널 닫기 (확인 필요) |
exit 또는 Ctrl+d |
패널 종료 |
📋 복사 모드 (Copy Mode)
tmux 안에서 스크롤하거나 텍스트를 복사할 때 사용한다.
| 단축키 |
동작 |
<prefix> [ |
복사 모드 진입 |
q 또는 Esc |
복사 모드 종료 |
Space |
선택 시작 (vi 모드) |
Enter |
선택 복사 후 종료 |
<prefix> ] |
복사한 내용 붙여넣기 |
↑↓ 또는 PgUp/PgDn |
스크롤 |
vi 모드 활성화 (~/.tmux.conf에 추가):
set-window-option -g mode-keys vi
⚙️ 설정 파일 (~/.tmux.conf)
자주 쓰는 설정 예시
# Prefix 키를 Ctrl+a 로 변경 (선택)
unbind C-b
set-option -g prefix C-a
bind-key C-a send-prefix
# 마우스 지원 활성화
set -g mouse on
# 패널 번호 1부터 시작
set -g base-index 1
setw -g pane-base-index 1
# 설정 리로드 단축키
bind r source-file ~/.tmux.conf \; display "Reloaded!"
# vi 모드
setw -g mode-keys vi
# 256 색상 지원
set -g default-terminal "screen-256color"
# 상태바 색상
set -g status-style bg=colour235,fg=colour136
설정 리로드
tmux source-file ~/.tmux.conf
# 또는 tmux 안에서
<prefix> r # 위 설정 적용 시
🔧 기타 유용한 명령어
# 특정 세션의 모든 윈도우에 같은 명령 실행
tmux send-keys -t my-session "ls -al" Enter
# 세션 이름 변경
tmux rename-session -t old-name new-name
# tmux 버전 확인
tmux -V
| 단축키 |
동작 |
<prefix> ? |
단축키 목록 전체 보기 |
<prefix> : |
tmux 명령어 직접 입력 |
<prefix> t |
현재 시각 표시 |
💡 실전 팁
- 서버에서 nohup 대신 tmux —
nohup보다 tmux 세션 안에서 작업하면 재접속 후 출력 로그를 그대로 볼 수 있다.
- 세션 이름은 프로젝트별로 —
tmux new -s backend, tmux new -s frontend 처럼 구분하면 편하다.
<prefix> z 줌 기능 — 특정 패널을 잠깐 전체화면으로 볼 때 매우 유용하다.
- 마우스 모드 —
set -g mouse on 하나로 클릭 이동, 드래그 리사이즈 모두 가능해진다.
- TPM (Tmux Plugin Manager) — 플러그인 생태계가 있어 테마, 세션 저장/복원 등 확장 가능.