2026년 3월 9일 작성
tmux - Terminal Multiplexer
tmux는 하나의 terminal에서 여러 session을 만들고, 각 session 안에서 window와 pane을 분할하여 작업하는 terminal multiplexer입니다.
tmux : Terminal Multiplexer
tmux
- tmux는 하나의 terminal 안에서 여러 작업 환경을 만들고 전환하며 동시에 관리하는 도구입니다.
- 화면을 분할하여 여러 shell을 동시에 볼 수 있고, session을 분리(detach)했다가 다시 연결(attach)하는 것도 가능합니다.
- terminal 연결이 끊어져도 tmux session은 server에서 계속 실행됩니다.
- SSH 원격 작업 중 네트워크가 끊어져도 작업이 유지되므로, server 환경에서 특히 유용합니다.
tmux의 구조 : Session, Window, Pane
- tmux는 session, window, pane의 3계층 구조로 이루어져 있습니다.
- session은 독립된 작업 공간이며, 그 안에 여러 window를 가집니다.
- window는 하나의 전체 화면이며, 여러 pane으로 분할됩니다.
- pane은 화면을 나눈 각각의 영역으로, 각 pane에서 독립적인 shell이 실행됩니다.
graph TD
tmux_server[tmux Server]
tmux_server --> session_1[Session 1]
tmux_server --> session_2[Session 2]
session_1 --> window_1[Window 1]
session_1 --> window_2[Window 2]
window_1 --> pane_1[Pane 1]
window_1 --> pane_2[Pane 2]
window_1 --> pane_3[Pane 3]
window_2 --> pane_4[Pane 1]
window_2 --> pane_5[Pane 2]
Session
- session은 tmux에서 가장 큰 단위의 작업 공간입니다.
- 하나의 session은 독립된 작업 환경이며, 여러 window를 포함합니다.
- session 단위로 detach하고 attach할 수 있으므로, 작업 맥락을 보존한 채 terminal을 닫았다가 다시 열 수 있습니다.
Window
- window는 session 안에서 하나의 전체 화면을 차지하는 단위입니다.
- browser의 tab과 비슷한 개념으로, 여러 window를 만들어 두고 전환하면서 사용합니다.
- 각 window에는 이름을 지정하여 구분합니다.
Pane
- pane은 하나의 window를 분할한 영역입니다.
- window 안에서 화면을 수평 또는 수직으로 나누면 각각의 pane이 생성됩니다.
- 각 pane은 독립적인 shell을 실행하므로, 한 화면에서 여러 작업을 동시에 볼 수 있습니다.
tmux의 동작 방식 : Client-Server 구조
- tmux는 client-server 구조로 동작합니다.
tmux명령어를 실행하면, background에서 tmux server가 시작되고 client가 server에 연결됩니다.- session은 server에서 관리되므로, client(terminal)가 종료되어도 session은 유지됩니다.
- detach는 client와 server의 연결을 끊는 것이고, attach는 다시 연결하는 것입니다.
- server가 실행 중인 한 session의 상태는 보존됩니다.
Prefix Key
- tmux의 모든 단축키는 prefix key를 먼저 누른 후에 입력합니다.
- 기본 prefix key는
Ctrl+b입니다. - prefix key를 누른 뒤 손을 떼고, 이어서 명령 key를 입력하는 방식입니다.
- 기본 prefix key는
- 예를 들어, 화면을 수직으로 분할하려면
Ctrl+b를 누른 뒤%를 입력합니다.- 이 문서에서는 prefix key를
<prefix>로 표기합니다.
- 이 문서에서는 prefix key를
Session 관련 명령어
tmux new로 session을 생성하고,tmux attach로 다시 연결하며,<prefix>+d로 분리합니다.
Session 생성
tmux
tmux new -s my_session
| 명령어 | 설명 |
|---|---|
tmux |
자동 번호가 부여되는 새 session 생성 |
tmux new -s [name] |
지정한 이름으로 새 session 생성 |
Session 목록 조회
tmux ls
| 명령어 | 설명 |
|---|---|
tmux ls |
현재 실행 중인 모든 session 목록 출력 |
<prefix> + s |
tmux 내에서 session 목록 확인 및 전환 |
Session 연결 (Attach)
tmux attach -t my_session
tmux a -t my_session
| 명령어 | 설명 |
|---|---|
tmux attach -t [name] |
지정한 session에 다시 연결 |
tmux a |
가장 최근에 사용한 session에 연결 |
Session 분리 (Detach)
| 명령어 | 설명 |
|---|---|
<prefix> + d |
현재 session에서 분리, session은 background에서 계속 실행 |
Session 종료
tmux kill-session -t my_session
| 명령어 | 설명 |
|---|---|
tmux kill-session -t [name] |
지정한 session 종료 |
tmux kill-server |
tmux server와 모든 session 종료 |
exit |
현재 pane의 shell 종료, 마지막 pane이면 session도 종료 |
Window 관련 단축키
<prefix>+c로 window를 생성하고,<prefix>+n/p로 전환하며,<prefix>+&로 종료합니다.
| 단축키 | 설명 |
|---|---|
<prefix> + c |
새 window 생성 |
<prefix> + , |
현재 window 이름 변경 |
<prefix> + w |
window 목록 확인 및 전환 |
<prefix> + n |
다음 window로 이동 |
<prefix> + p |
이전 window로 이동 |
<prefix> + [번호] |
해당 번호(0부터 시작)의 window로 이동 |
<prefix> + & |
현재 window 종료 (확인 prompt 표시) |
Pane 관련 단축키
<prefix>+%/"로 pane을 분할하고,<prefix>+방향키로 pane 간 이동하며,<prefix>+z로 확대/복원합니다.
Pane 분할
| 단축키 | 설명 |
|---|---|
<prefix> + % |
화면을 수직(좌우)으로 분할 |
<prefix> + " |
화면을 수평(상하)으로 분할 |
Pane 이동
| 단축키 | 설명 |
|---|---|
<prefix> + 방향키 |
해당 방향의 pane으로 이동 |
<prefix> + q |
pane 번호 표시 후 번호 입력으로 해당 pane 이동 |
<prefix> + o |
다음 pane으로 순서대로 이동 |
<prefix> + ; |
직전에 사용한 pane으로 이동 |
Pane 크기 조절
| 단축키 | 설명 |
|---|---|
<prefix> + Ctrl + 방향키 |
해당 방향으로 pane 크기 조절 |
<prefix> + z |
현재 pane 전체 화면 확대 또는 원래 크기 복원 |
Pane 종료
| 단축키 | 설명 |
|---|---|
<prefix> + x |
현재 pane 종료 (확인 prompt 표시) |
exit |
현재 pane의 shell 종료 |
Copy Mode
- tmux 안에서는 terminal의 기본 scroll이 동작하지 않으므로, copy mode에 진입해야 이전 출력을 확인하거나 텍스트를 복사합니다.
<prefix>+[로 copy mode에 진입하고,q로 빠져나옵니다.
- copy mode에서는 방향키 또는 vi key binding(
h,j,k,l)으로 이동하며,Space로 선택을 시작하고Enter로 복사합니다.- 복사한 텍스트는
<prefix>+]로 붙여넣습니다.
- 복사한 텍스트는
| 단축키 | 설명 |
|---|---|
<prefix> + [ |
copy mode 진입 |
q |
copy mode 종료 |
Space |
선택 시작 |
Enter |
선택 영역 복사 |
<prefix> + ] |
복사한 텍스트 붙여넣기 |
.tmux.conf : 설정 File
~/.tmux.conffile에 설정을 작성하면, tmux 시작 시 자동으로 적용됩니다.- 이미 실행 중인 session에서는
<prefix>+:를 누른 뒤source-file ~/.tmux.conf를 입력하여 다시 불러옵니다.
- 이미 실행 중인 session에서는
# prefix key를 Ctrl + a로 변경
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# mouse 활성화 (scroll, pane 선택, 크기 조절)
set -g mouse on
# pane 분할 key를 직관적으로 변경
bind | split-window -h
bind - split-window -v
# window 번호를 1부터 시작
set -g base-index 1
set -g는 global option 설정이고,bind는 key binding 설정입니다.
synchronize-panes : 여러 Pane 동시 입력
- 여러 server에 동일한 명령어를 동시에 실행해야 할 때, pane마다 SSH 접속한 뒤
synchronize-panes를 활성화하면 모든 pane에 같은 입력이 전달됩니다.
# tmux 명령어로 활성화/비활성화 전환
<prefix> + : 입력 후
set synchronize-panes on
set synchronize-panes off
- 활성화 상태에서 keyboard 입력을 하면, 현재 window의 모든 pane에 동시에 전달됩니다.
- 비활성화하면 다시 개별 pane에만 입력됩니다.