tmux는 Warp가 아니다 — 터미널 앱과 세션 멀티플렉서를 헷갈리지 않기
그냥 Warp로 SSH 붙어서 claude 친 건 tmux가 아니다. 터미널 앱(Warp·iTerm)과 tmux(서버에서 도는 세션 멀티플렉서)의 차이, 그리고 접속이 끊겨도 세션이 살아남고 기기를 넘나드는 원리를 정리한다.
원격 서버에서 오래 도는 작업(예: claude)을 돌리다가, "이거 tmux로 하는 거 맞지?" 하고 착각한 적이 있다. 그냥 Warp로 SSH 붙어서 명령을 친 것뿐이었는데 말이다. 헷갈리기 쉬운 지점이라 나중에 나 자신이 다시 보려고 정리해 둔다.
Warp ≠ tmux — 둘은 아예 다른 층에 있다
핵심부터: Warp와 tmux는 경쟁 관계가 아니라 서로 다른 층의 물건이다.
- Warp는 내 맥에 깔린 터미널 앱이다. 기본 Terminal.app, iTerm2 같은 부류. 그냥 명령을 입력하고 출력을 보는 창일 뿐이다. 내 노트북에서 돈다.
- tmux는 서버에서 도는 별도의 프로그램이다. 이름은 "terminal multiplexer"(터미널 멀티플렉서). 접속이 끊겨도 세션을 서버 쪽에 살려두는 게 역할이다.
그래서 그냥 Warp로 SSH 붙어서 claude를 친 건 tmux가 아니다. 그건 평범한 SSH 세션이라 — Warp 창을 닫거나 네트워크가 끊기면 claude도 같이 죽는다.
왜 죽나? SSH 세션에서 실행한 프로세스는 그 SSH 연결에 매달려(자식으로) 있다. 연결이 끊기면 서버는 세션에 걸린 프로세스들에 신호를 보내 정리한다. 노트북을 덮는 순간, 서버 입장에선 "터미널이 사라졌다"이고, 거기 매달린 작업도 함께 사라진다.
tmux가 그 사이에 한 겹 끼면 달라진다
tmux를 쓰면 프로세스가 SSH 세션이 아니라 tmux 세션에 매달린다. 그리고 tmux 세션은 서버에서 독립적으로 계속 돈다. SSH가 끊겨도 tmux는 서버에 그대로 살아 있고, 그 안의 claude도 계속 돈다.
그림으로 보면:
[평범한 SSH]
내 노트북(Warp) ──SSH──> 서버: claude
└ SSH 끊기면 같이 죽음 ✗
[tmux 경유]
내 노트북(Warp) ──SSH──> 서버: tmux 세션 ── claude
└ SSH 끊겨도 tmux는 서버에 살아있음 ✓
나중에 다시 attach 하면 그대로 이어받음
실제로 켜는 법 — 명시적으로 켜야 한다
여기서 중요한 함정: tmux는 저절로 켜지지 않는다. SSH로 붙었다고 tmux 안에 들어가는 게 아니다. 명시적으로 tmux 명령을 쳐서 세션을 시작해야 한다.
ssh user@server # 1) 서버 접속
tmux new -s work # 2) tmux 세션 시작 (이름 = work)
claude # 3) 이제 claude가 tmux "안"에서 돈다이러면 맥을 덮거나 연결이 끊겨도 서버에선 claude가 계속 돈다. 나중에 이어받을 땐:
ssh user@server
tmux attach -t work # 하던 세션 그대로 복귀attach(붙기) 하면 아까 그 화면, 그 대화가 그대로 나온다. 중간에 흐른 출력도 남아 있다.
detach(떼기) 는 세션을 죽이지 않고 tmux에서 빠져나오는 것:
Ctrl-b누르고d. 이걸 하면 tmux는 서버에 계속 돌고 나는 SSH만 나온다. 사실 노트북을 그냥 덮어버려도(강제로 SSH가 끊겨도) 결과는 같다 — tmux는 살아남는다.
세션 목록/관리 자주 쓰는 것만:
tmux ls # 서버에 살아있는 세션 목록
tmux attach -t work # 이름으로 붙기
tmux new -s logs # 두 번째 세션(예: 로그 보기용)
tmux kill-session -t work # 세션 완전히 종료진짜 강점: 기기를 넘나드는 작업
tmux가 특정 터미널 앱 전용이 아니라는 점이 핵심이다. 세션은 서버에 있으니, 붙는 쪽은 아무 터미널이나 상관없다.
- 사무실에서 iTerm으로
tmux new -s work→claude돌려놓고, - 카페로 이동, 노트북 덮음 (SSH 끊김, 하지만 tmux는 서버에서 계속 돎),
- 집에서 다른 맥의 Warp로
ssh→tmux attach -t work→ 하던 대화 그대로 이어받음. - 심지어 폰의 SSH 앱(예: Termius)으로 붙어서 상태를 확인할 수도 있다.
"기기 넘나들기"가 되는 이유가 바로 이것이다. 작업의 상태가 내 노트북이 아니라 서버에 고정돼 있으니까. GUI 기반 도구엔 없는, 서버 기반 워크플로우만의 강점이다.
정리
- Warp/iTerm/Terminal = 터미널 앱 (내 기기에서 도는 창). tmux = 서버에서 도는 세션 멀티플렉서. 층이 다르다.
- 그냥 SSH로 붙어서 명령을 친 건 tmux가 아니다 — 연결이 끊기면 프로세스도 죽는다.
- tmux를 쓰려면 접속 후
tmux new -s <이름>으로 명시적으로 세션을 시작해야 한다. - 끊겨도 세션은 서버에 살아남고,
tmux attach -t <이름>으로 아무 터미널·아무 기기에서나 이어받는다.
오래 도는 원격 작업, 특히 AI 코딩 에이전트처럼 몇 분~몇 시간 걸리는 작업을 서버에서 돌린다면 tmux는 사실상 필수다. 한 줄 요약 — "SSH가 통로라면, tmux는 그 통로가 끊겨도 남는 작업 그 자체다."