tmux는 터미널 멀티플렉서로, 하나의 터미널 창에서 여러 세션, 윈도우, 패널을 관리하여 생산성을 극대화하는 강력한 도구입니다. 이 글에서는 tmux의 기본 개념, 설치 방법, 주요 용어 및 필수 명령어에 대해 알아봅니다.
개요
tmux는 ‘Terminal Multiplexer’의 약자로, 하나의 터미널 창(또는 원격 접속 세션) 내에서 여러 개의 독립적인 터미널 세션을 생성하고 관리할 수 있게 해주는 도구입니다. tmux를 사용하면 터미널 세션을 영구적으로 유지할 수 있어, 네트워크 연결이 끊어지더라도 실행 중이던 작업을 안전하게 보존하고 나중에 다시 접속하여 이어갈 수 있습니다.
주요 장점은 다음과 같습니다.
- 세션 유지: SSH 연결이 끊어져도 서버에서 실행 중인 작업을 계속 유지합니다.
- 창 및 패널 관리: 하나의 화면에서 여러 개의 창(window)과 패널(pane)을 분할하여 동시에 여러 작업을 모니터링하고 실행할 수 있습니다.
- 페어 프로그래밍: 여러 사용자가 동일한 세션에 접속하여 화면을 공유하고 함께 작업할 수 있습니다.
기술적 배경
tmux는 screen 명령어의 현대적인 대안으로 개발되었습니다. screen 역시 터미널 멀티플렉서의 기능을 제공하지만, tmux는 더 깔끔한 설정 파일(conf), 유연한 스크립팅 기능, 명확한 클라이언트-서버 모델 아키텍처를 제공하여 사용자 편의성과 확장성을 높였습니다.
클라이언트-서버 구조 덕분에 세션 관리가 더 안정적이며, 다양한 플러그인 생태계를 통해 기능을 쉽게 확장할 수 있습니다. 예를 들어, 시스템 재부팅 후에도 세션을 그대로 복구해주는 플러그인 등을 활용할 수 있습니다.
설치
tmux는 대부분의 Unix 기반 운영체제에서 패키지 매니저를 통해 쉽게 설치할 수 있습니다.
macOS (Homebrew 사용)
brew install tmuxDebian / Ubuntu (
apt사용)sudo apt update sudo apt install tmuxCentOS / RHEL / Fedora (
yum또는dnf사용)sudo yum install tmux # 또는 sudo dnf install tmux
설치가 완료되면 터미널에 tmux를 입력하여 시작할 수 있습니다.
용어 및 구성요소
tmux의 구조를 이해하기 위해 세 가지 핵심 요소를 알아야 합니다.
- 세션 (Session):
tmux서버에 의해 관리되는 가장 큰 단위입니다. 각 세션은 하나 이상의 창(window)을 가질 수 있으며, 독립적인 작업 환경을 구성합니다. 사용자는 여러 세션을 동시에 실행하고 필요에 따라 전환할 수 있습니다. - 창 (Window): 세션 내에 있는 개별 탭과 유사합니다. 하나의 창은 전체 화면을 차지하며, 여러 개의 패널로 분할될 수 있습니다.
- 패널 (Pane): 창을 수직 또는 수평으로 분할한 작은 영역입니다. 각 패널은 독립적인 쉘 프롬프트를 가지므로, 여기서 명령어를 실행할 수 있습니다.
계층 구조는 다음과 같습니다.
Session
└── Window
├── Pane 1
├── Pane 2
└── Pane 3
주요 명령어
tmux의 모든 명령어는 Prefix 키를 누른 후 입력합니다. 기본 Prefix는 Ctrl+b 입니다. 예를 들어 새 창을 만들려면 Ctrl+b를 누르고 손을 뗀 다음, c를 누릅니다.
참고: 이 가이드에 소개된 키 바인딩은
tmux의 기본 설정입니다.~/.tmux.conf파일을 수정하여 자신만의 키 바인딩을 설정할 수 있으며, 특히 Oh My Tmux와 같은 프레임워크를 사용하면 키 설정이 크게 달라질 수 있습니다.
세션 관리
| 명령어 | 설명 |
|---|---|
tmux new -s <세션이름> | 새로운 이름의 세션을 시작합니다. |
tmux ls | 현재 실행 중인 세션 목록을 봅니다. |
tmux a -t <세션이름> | 지정된 이름의 세션에 접속합니다. |
Ctrl+b d | 현재 접속된 세션에서 빠져나옵니다 (Detach). |
Ctrl+b $ | 현재 세션의 이름을 변경합니다. |
창 (Window) 관리
| 명령어 (Prefix +) | 설명 |
|---|---|
c | 새 창을 생성합니다. |
w | 창 목록을 보여주고 선택하여 전환합니다. |
p | 이전 창으로 이동합니다. |
n | 다음 창으로 이동합니다. |
& | 현재 창을 닫습니다. (확인 프롬프트 표시) |
, | 현재 창의 이름을 변경합니다. |
패널 (Pane) 관리
tmux의 패널 기능은 하나의 창을 여러 개의 작은 터미널 영역으로 분할하여 동시에 여러 작업을 수행할 때 매우 유용합니다. 예를 들어, 한 패널에서는 코드를 편집하고, 다른 패널에서는 테스트를 실행하거나 서버 로그를 모니터링할 수 있습니다.
| 명령어 (Prefix +) | 설명 |
|---|---|
% | 현재 패널을 수직으로 분할합니다. (새로운 패널은 오른쪽에 생성) |
" | 현재 패널을 수평으로 분할합니다. (새로운 패널은 아래쪽에 생성) |
o | 다음 패널로 이동합니다 (순환). |
방향키 | 활성 패널을 원하는 방향(상/하/좌/우)으로 이동합니다. (예: Prefix + Left Arrow는 왼쪽 패널로 이동) |
Ctrl + 방향키 | (Prefix를 누른 상태에서) 패널의 크기를 조절합니다. |
{ | 현재 패널을 이전 패널과 바꿉니다. |
} | 현재 패널을 다음 패널과 바꿉니다. |
x | 현재 패널을 닫습니다. (확인 프롬프트 표시) |
z | 현재 패널을 전체 화면으로 확대/축소합니다. 다시 누르면 원래 크기로 돌아갑니다. |
space | 미리 정의된 레이아웃으로 패널 배치를 변경합니다. (다양한 레이아웃 순환) |
고급 활용: 플러그인과 설정
tmux의 진정한 힘은 확장성에서 나옵니다. ~/.tmux.conf 파일을 수정하여 키 바인딩을 변경하거나 스타일을 커스터마이징할 수 있습니다.
**TPM (Tmux Plugin Manager)**을 사용하면 플러그인을 쉽게 관리할 수 있습니다. 인기 있는 플러그인은 다음과 같습니다:
- tmux-resurrect: 시스템 재부팅 후에도
tmux환경을 복원해줍니다. - tmux-continuum: 백그라운드에서 주기적으로 환경을 자동 저장합니다.
Oh My Tmux로 더 강력하게
.tmux.conf를 처음부터 설정하는 것은 다소 번거로울 수 있습니다. 이때 Oh My Tmux를 사용하면 매우 아름답고 기능이 풍부한 tmux 환경을 단 몇 분 만에 구성할 수 있습니다.
Oh My Tmux는 tmux의 설정을 미리 구성해놓은 프레임워크로, 다음과 같은 장점을 제공합니다:
- 세련된 디자인: Powerline 스타일의 상태 표시줄, 시스템 정보(CPU, 메모리) 표시 등 시각적으로 뛰어난 UI.
- 직관적인 키 바인딩:
Ctrl+a를 새로운 Prefix로 사용하며 (기존Ctrl+b도 지원), 다양한 추가 단축키 제공. - 마우스 지원: 마우스 클릭으로 패널 선택, 창 이동, 크기 조절 등이 가능.
- 쉬운 확장:
.tmux.conf.local파일을 수정하여 개인 설정을 쉽게 덮어쓸 수 있습니다.
설치 방법
터미널에서 다음 명령어를 실행하여 설치합니다.
cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .
이제 tmux를 실행하면 화려하게 변신한 화면을 볼 수 있습니다.
주요 키 바인딩 변경 및 추가
Oh My Tmux는 기본 Prefix를 Ctrl+a로 설정하지만, Ctrl+b도 계속 사용할 수 있습니다. 가장 큰 변화는 패널 관리와 관련된 부분입니다.
패널 분할, 이동 및 크기 조절 (Oh My Tmux)
명령어 (Prefix: Ctrl+a) | 설명 |
|---|---|
_ | 현재 패널을 수직으로 분할합니다. |
- | 현재 패널을 수평으로 분할합니다. |
Alt + 방향키 | Prefix 없이 패널 간 이동 |
Ctrl+a + h 또는 j 또는 k 또는 l | Vim 방향키를 사용해 패널 간 이동 |
Shift + 방향키 | Prefix 없이 패널 크기 조절 |
Ctrl+a + H 또는 J 또는 K 또는 L | 패널 크기를 Vim 방향키로 조절 |
z | 현재 패널을 전체 화면으로 확대/축소 |
< 또는 > | 현재 패널을 이전/다음 패널과 위치를 바꿉니다. |
이 외에도 세션 관리를 위한 fzf 연동(Ctrl+a + S), 스크롤 모드 진입(Ctrl+a + [), 설정 파일 편집(Ctrl+a + e) 등 유용한 기능이 많습니다.
나만의 설정 추가하기
Oh My Tmux의 기본 설정을 변경하고 싶다면 ~/.tmux.conf.local 파일을 수정하면 됩니다. 예를 들어, 기본 쉘을 zsh로 변경하거나, 새로운 키 바인딩을 추가할 수 있습니다.
# ~/.tmux.conf.local
# zsh을 기본 쉘로 설정
set-option -g default-shell /bin/zsh
# 새로운 키 바인딩 추가 (예: Ctrl+a + t로 htop 실행)
bind t new-window -n "htop" "htop"
Oh My Tmux를 사용하면 복잡한 설정 없이도 강력하고 아름다운 tmux 환경을 즉시 사용할 수 있어 생산성을 크게 높일 수 있습니다.
Cheat Sheet
자주 사용하는 핵심 단축키 요약입니다.
| 동작 | tmux (Ctrl+b) | Oh My Tmux (Ctrl+a) |
|---|---|---|
| 세션 생성 | tmux new -s <이름> | tmux new -s <이름> |
| 세션 종료 (Detach) | d | d |
| 세션 목록 | tmux ls | tmux ls |
| 세션 접속 | tmux a -t <이름> | tmux a -t <이름> |
| 창 생성 | c | c |
| 창 이동 | n (다음), p (이전), w (목록 선택) | n, p, w |
| 패널 수직 분할 | % | _ |
| 패널 수평 분할 | " | - |
| 패널 이동 | 방향키 | h j k l 또는 Alt+방향키 |
| 패널 크기 조절 | Ctrl + 방향키 | H J K L 또는 Shift+방향키 |
| 패널 스왑 | { (이전), } (다음) | < (이전), > (다음) |
| 패널 닫기 | x | x |
| 패널 줌 | z | z |
| 스크롤 모드 | [ (나갈 땐 q) | [ (나갈 땐 q) |
tmux는 터미널 작업의 효율성을 크게 향상시키는 강력한 도구입니다. 이 가이드에서 다룬 기본 명령어만 익혀도 터미널 환경을 훨씬 더 쾌적하게 만들 수 있습니다. 더 나아가 .tmux.conf 설정 파일을 통해 자신만의 단축키와 스타일을 만들어 사용하는 것을 추천합니다.