Claude Code 병렬 작업을 위한 tmux
1) 터미널 작업 중 SSH 연결이 끊기거나 터미널을 닫아도 작업이 유지되길 원할 때
2) 여러 작업 환경을 동시에 운영하고 싶을 때
tmux를 유의미하게 사용할 수 있다.
tmux란
tmux(terminal multiplexer)는 하나의 터미널 안에서 여러 가상 터미널 세션을 만들고 전환할 수 있게 해주는 도구.
단일 단말기 또는 원격 터미널 세션 안에서 여러 별도의 터미널 세션에 접근할 수 있도록 여러 가상 콘솔을 다중화하는 데 사용된다.
iTerm2와의 차이
iTerm2는 macOS용 터미널 에뮬레이터.
순정 터미널과 달리 화면 분할, 사용자 정의 단축키, 테마 지원 등의 편의 기능을 제공한다.
tmux는 터미널 멀티플렉서로, 세션이 백그라운드에서 독립적으로 살아있다.
터미널을 닫아도(detach) 세션은 유지되고, 나중에 다시 붙을 수(attach) 있다.
특히 SSH 환경에서 차이가 크다.
SSH 연결이 끊겨도 tmux 세션 안에서 돌아가던 작업은 그대로 유지된다.
iTerm2에서는 연결이 끊기면 작업도 함께 사라진다.
예를 들어, top 명령어(컴퓨터가 현재 수행 중인 프로세스와 리소스 사용량을 실시간으로 보여주는 명령어)를 tmux 세션에서 실행해두면 터미널을 닫았다가 다시 attach해도 계속 모니터링 중인 상태를 확인할 수 있다.
tmux의 장점
세션 지속성 — 터미널을 종료하거나 SSH 연결이 끊겨도 세션이 로컬 서버에서 유지된다.
나중에 attach하면 이전 작업을 그대로 이어갈 수 있다.
백그라운드 실행 — 오래 걸리는 빌드, 배포 스크립트 등을 tmux 세션에서 실행하고 detach하면 터미널에서 빠져나와도 작업이 계속 돌아간다.
여러 세션 동시 운영 — 프로젝트별, 용도별로 세션을 분리해서 운영할 수 있다.
세션 간 전환이 빠르고, 각 세션의 상태가 독립적으로 유지된다.
session / window / pane 구분
tmux의 내부 구성은 session > window > pane 계층 구조를 따른다.
| 구성 요소 | 설명 |
|---|---|
| Session | 프로젝트 단위의 기본 작업 공간, 여러 window로 구성 |
| Window | session 내 탭처럼 작동하는 터미널 화면 |
| Pane | window 내에서 화면을 분할한 영역 |
기본 흐름은 session 생성 -> window 생성 -> 필요 시 pane 분할이다.
- session을 나누는 상황
서로 다른 프로젝트나 완전히 다른 맥락의 작업을 분리할 때 session을 나눈다.
예시: frontend session에서는 React 개발 서버와 관련 작업을, backend session에서는 API 서버와 DB 관련 작업을 각각 운영한다. 퇴근 후 터미널을 닫아도 다음 날 각 session에 attach하면 어제 작업 상태 그대로 이어갈 수 있다.
- window를 나누는 상황
같은 프로젝트 내에서 역할이 다른 터미널이 필요할 때 window를 나눈다.
예시: frontend session 안에서 window 0은 개발 서버 실행용(npm run dev), window 1은 코드 편집용(vim), window 2는 git 작업용으로 분리한다. Ctrl+b, 0~2로 빠르게 전환하며 작업한다.
- pane을 나누는 상황
한 화면에서 동시에 두 가지를 봐야 할 때 pane을 나눈다.
예시: 왼쪽 pane에서 코드를 수정하면서 오른쪽 pane에서 실시간 로그를 확인한다. 또는 위쪽 pane에서 API 요청을 보내면서 아래쪽 pane에서 서버 응답 로그를 모니터링한다.
주요 명령어
1) session 명령어
1
2
3
4
tmux new -s <세션명> # 새 세션 생성
tmux new -s <세션명> -n <윈도우명> # 세션 + 윈도우 이름 지정하여 생성
tmux ls # 세션 목록 확인
tmux attach -t <번호/세션명> # 세션 재개(attach)
2) window 단축키
tmux의 단축키는 prefix인 Ctrl+b를 먼저 입력한 뒤 키를 누르는 방식이다.
1
2
3
4
5
6
7
8
Ctrl+b, c 새 윈도우 생성
Ctrl+b, 0-9 특정 번호 윈도우로 이동
Ctrl+b, n 다음 윈도우
Ctrl+b, p 이전 윈도우
Ctrl+b, l 마지막 사용 윈도우
Ctrl+b, w 윈도우 목록 보기
Ctrl+b, f 윈도우명 검색
Ctrl+b, , 윈도우명 변경
3) pane 단축키
1
2
3
4
5
Ctrl+b, % 좌우 분할
Ctrl+b, " 상하 분할
Ctrl+b, 방향키 pane 간 이동
Ctrl+d 현재 pane 삭제
Ctrl+b, Alt+방향키 pane 크기 조정
4) 기타
1
2
Ctrl+b, $ 세션명 변경
Ctrl+b, ? 단축키 목록 확인
Claude Code와 tmux
sub-agent를 써야 하는 상황
Claude Code를 순차적으로 사용하면 접근법 A를 시도하고, 평가한 뒤, 접근법 B를 시도하는 흐름이 된다.
문제는 첫 번째 시도의 맥락이 흐려진 상태에서 두 번째를 판단하게 되어 비교가 부정확해진다는 점이다.
sub-agent의 핵심 가치는 병렬 + 격리다.
서로 다른 맥락에서 동시에 시도할 수 있기 때문에, 같은 문제에 대해 두 가지 접근을 동시에 진행하면 비교 판단이 선명해진다.
병렬 프로토타이핑 패턴
tmux의 session/window 구조가 이 병렬 탐구 패턴에 자연스럽게 맞아떨어진다.
| 구성 요소 | 역할 |
|---|---|
| session | 탐구 주제 (예: “결제 모듈 리팩토링”) |
| window 0 | claude — 접근법 A (예: 클래스 기반) |
| window 1 | claude — 접근법 B (예: 함수형) |
| window 2 | 결과 비교 / 메모 |
두 window를 동시에 보면서 비교하기 때문에 판단이 선명해진다.
1
2
3
tmux new -s refactor -n approach-A
tmux new-window -n approach-B
tmux new-window -n compare