🖥️
tmux는 어떻게 동작하나?
터미널 멀티플렉서로 세션 유지 & 분할
tmux(terminal multiplexer)는 하나의 터미널 창에서 여러 세션을 관리하고, 창을 분할하며, SSH 연결이 끊겨도 작업을 유지할 수 있게 해주는 도구입니다. 핵심은 서버-클라이언트 구조입니다. tmux 서버가 백그라운드에서 세션을 관리하고, 우리가 보는 터미널은 클라이언트로서 서버에 연결합니다. 그래서 터미널을 닫아도(detach) 서버의 세션은 살아있고, 나중에 다시 연결(attach)할 수 있습니다. 계층 구조는 Server > Session > Window > Pane입니다.
구조 다이어그램
🖥️
tmux 서버
백그라운드 프로세스
Session: dev
Window 0: vim
Pane 0
Pane 1
Window 1: server
rails s
attach
←
→
detach
💻
터미널 (클라이언트)
iTerm / Terminal.app
$ tmux attach -t dev
# 세션에 연결
계층 구조: Server > Session > Window > Pane
Server
→
Session (dev)
→
Window (vim)
→
Pane
주요 명령어 (prefix: Ctrl+b)
d
detach
c
new window
%
세로 분할
"
가로 분할
n/p
다음/이전 창
arrow
패인 이동
SSH 끊김 시나리오
SSH 접속
→
tmux new -s work
→
작업 중...
→
네트워크 끊김!
→
SSH 재접속
→
tmux attach -t work
→
작업 그대로!
핵심 포인트
- 서버-클라이언트 구조: 터미널은 클라이언트, tmux 서버는 백그라운드에서 실행
- 세션 유지: detach해도 서버+세션은 살아있음 — SSH 끊김에도 안전
- 다중 연결: 같은 세션에 여러 클라이언트가 attach 가능 (페어 프로그래밍)
- 화면 분할: Pane으로 하나의 Window를 분할해서 멀티태스킹
동작 흐름
1
첫 tmux 명령 실행 시 백그라운드에서 tmux 서버 프로세스 시작
2
서버가 새 세션(Session) 생성, 세션 안에 기본 윈도우(Window) 생성
3
터미널(클라이언트)이 서버에 연결되어 세션 표시
4
Ctrl+b d로 detach → 클라이언트만 종료, 서버+세션은 유지
5
tmux attach로 기존 세션에 다시 연결 (SSH 재접속 후에도 가능)
6
Ctrl+b %/" 로 pane 분할, Ctrl+b c로 새 window 생성
장점
- ✓ SSH 끊김에도 세션 유지
- ✓ 화면 분할로 멀티태스킹
- ✓ 세션 공유로 협업 가능
- ✓ 스크립트로 자동화 가능 (tmuxinator)
- ✓ 가볍고 빠름
단점
- ✗ 키 바인딩 학습 필요
- ✗ prefix 키 (Ctrl+b) 습관 들이기
- ✗ 마우스 지원이 제한적 (설정 필요)
- ✗ 복잡한 레이아웃 관리 어려움
사용 사례
SSH 연결 끊김 방지 (원격 서버 작업)
터미널 화면 분할 (여러 작업 동시 모니터링)
페어 프로그래밍 (같은 세션 공유)
장시간 작업 유지 (빌드, 배포)
서버 프로세스 관리 (detach 후 종료)