tmux는 터미널 멀티플렉서로, 하나의 터미널 창에서 여러 세션, 윈도우, 패널을 관리하여 생산성을 극대화하는 강력한 도구입니다. 이 글에서는 tmux의 기본 개념, 설치 방법, 주요 용어 및 필수 명령어에 대해 알아봅니다.

개요

tmux는 ‘Terminal Multiplexer’의 약자로, 하나의 터미널 창(또는 원격 접속 세션) 내에서 여러 개의 독립적인 터미널 세션을 생성하고 관리할 수 있게 해주는 도구입니다. tmux를 사용하면 터미널 세션을 영구적으로 유지할 수 있어, 네트워크 연결이 끊어지더라도 실행 중이던 작업을 안전하게 보존하고 나중에 다시 접속하여 이어갈 수 있습니다.

주요 장점은 다음과 같습니다.

  • 세션 유지: SSH 연결이 끊어져도 서버에서 실행 중인 작업을 계속 유지합니다.
  • 창 및 패널 관리: 하나의 화면에서 여러 개의 창(window)과 패널(pane)을 분할하여 동시에 여러 작업을 모니터링하고 실행할 수 있습니다.
  • 페어 프로그래밍: 여러 사용자가 동일한 세션에 접속하여 화면을 공유하고 함께 작업할 수 있습니다.

기술적 배경

tmuxscreen 명령어의 현대적인 대안으로 개발되었습니다. screen 역시 터미널 멀티플렉서의 기능을 제공하지만, tmux는 더 깔끔한 설정 파일(conf), 유연한 스크립팅 기능, 명확한 클라이언트-서버 모델 아키텍처를 제공하여 사용자 편의성과 확장성을 높였습니다.

클라이언트-서버 구조 덕분에 세션 관리가 더 안정적이며, 다양한 플러그인 생태계를 통해 기능을 쉽게 확장할 수 있습니다. 예를 들어, 시스템 재부팅 후에도 세션을 그대로 복구해주는 플러그인 등을 활용할 수 있습니다.

설치

tmux는 대부분의 Unix 기반 운영체제에서 패키지 매니저를 통해 쉽게 설치할 수 있습니다.

  • macOS (Homebrew 사용)

    brew install tmux
    
  • Debian / Ubuntu (apt 사용)

    sudo apt update
    sudo apt install tmux
    
  • CentOS / 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 Tmuxtmux의 설정을 미리 구성해놓은 프레임워크로, 다음과 같은 장점을 제공합니다:

  • 세련된 디자인: 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 또는 lVim 방향키를 사용해 패널 간 이동
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)dd
세션 목록tmux lstmux ls
세션 접속tmux a -t <이름>tmux a -t <이름>
창 생성cc
창 이동n (다음), p (이전), w (목록 선택)n, p, w
패널 수직 분할%_
패널 수평 분할"-
패널 이동방향키h j k l 또는 Alt+방향키
패널 크기 조절Ctrl + 방향키H J K L 또는 Shift+방향키
패널 스왑{ (이전), } (다음)< (이전), > (다음)
패널 닫기xx
패널 줌zz
스크롤 모드[ (나갈 땐 q)[ (나갈 땐 q)

tmux는 터미널 작업의 효율성을 크게 향상시키는 강력한 도구입니다. 이 가이드에서 다룬 기본 명령어만 익혀도 터미널 환경을 훨씬 더 쾌적하게 만들 수 있습니다. 더 나아가 .tmux.conf 설정 파일을 통해 자신만의 단축키와 스타일을 만들어 사용하는 것을 추천합니다.