Ubuntu에서 tmux 설치 및 사용법: 완벽 가이드 2025

LightNode
작성자 LightNode ·

소개

tmux(터미널 멀티플렉서)는 Ubuntu 및 기타 유닉스 계열 시스템에서 터미널 경험을 향상시키는 강력한 명령줄 도구입니다. 하나의 창 안에서 여러 터미널 세션을 생성할 수 있어 개발자, 시스템 관리자, 파워 유저에게 매우 유용한 도구입니다.

tmux란 무엇인가요?

tmux는 터미널 멀티플렉서로서 다음을 가능하게 합니다:

  • 하나의 창 안에서 여러 터미널 세션 생성
  • SSH 연결이 끊겨도 프로그램 계속 실행 유지
  • 터미널 창을 여러 개의 패널로 분할
  • 서로 다른 터미널 세션 간 원활한 전환
  • 다른 사용자와 터미널 세션 공유

tmux 사용의 장점

Ubuntu 서버나 로컬 머신에서 작업할 때 tmux는 다음과 같은 강력한 이점을 제공합니다:

  1. 지속적인 세션 유지: SSH 연결이 끊기거나 터미널을 실수로 닫아도 작업이 계속 실행됩니다. 세션에 다시 연결하면 이전 상태 그대로 작업을 이어갈 수 있습니다.

  2. 생산성 향상: 여러 터미널 창을 동시에 사용하면서 데스크톱이 복잡해지지 않습니다. 다양한 작업을 쉽게 전환하며 명확한 작업 개요를 유지할 수 있습니다.

  3. 협업 강화: 팀원과 터미널 세션을 공유하여 페어 프로그래밍이나 공동 문제 해결에 적합합니다.

시스템 요구사항

Ubuntu에 tmux를 설치하기 전에 시스템이 다음 최소 요구사항을 충족하는지 확인하세요:

  • Ubuntu 18.04 LTS 이상
  • 기본 터미널 사용법 숙지
  • 설치를 위한 충분한 시스템 권한(sudo 권한)
  • 최소 50MB 이상의 여유 디스크 공간

설치 방법

Ubuntu에서 tmux를 설치하는 주요 방법은 apt 패키지 관리자를 사용하는 방법과 소스에서 빌드하는 방법 두 가지가 있습니다. 두 가지 방법을 자세히 살펴보겠습니다.

apt 패키지 관리자 사용

가장 간단하고 권장되는 방법은 Ubuntu의 패키지 관리자 apt를 사용하는 것입니다. 설치 방법은 다음과 같습니다:

# 패키지 목록 업데이트
sudo apt update

# tmux 설치
sudo apt install tmux -y

# 설치 확인
tmux -V

이 방법은 의존성 관리를 자동으로 처리하며, Ubuntu 릴리스에 맞게 테스트된 안정적인 tmux 버전을 제공합니다.

소스에서 빌드하기

최신 기능이나 특정 버전이 필요한 사용자는 소스에서 빌드할 수 있습니다:

# 필요한 의존성 설치
sudo apt install git automake build-essential libevent-dev ncurses-dev

# 소스 코드 클론
git clone https://github.com/tmux/tmux.git
cd tmux

# 빌드 및 설치
sh autogen.sh
./configure
make
sudo make install

버전 비교

설치 방법별 차이점을 비교해보겠습니다:

  1. APT 설치:

    • 장점: 설치 및 업그레이드가 쉽고, 안정적인 버전 제공, 의존성 자동 관리
    • 단점: 최신 버전이 아닐 수 있음
    • Ubuntu 저장소 내 현재 버전: 보통 최신 버전보다 1~2 버전 뒤처짐
  2. 소스 설치:

    • 장점: 최신 기능 사용 가능, 컴파일 커스터마이징 가능
    • 단점: 의존성 수동 관리 필요, 설치 과정 복잡
    • 최신 버전: 공식 저장소와 항상 동기화됨

설치 후 다음 명령어로 tmux 버전을 확인할 수 있습니다:

tmux -V

기본 구성

tmux의 동작은 구성 파일과 다양한 설정을 통해 사용자 맞춤화할 수 있습니다. 필요에 맞게 tmux를 설정하고 커스터마이징하는 방법을 알아봅시다.

구성 파일 위치

tmux는 홈 디렉터리에서 구성 파일을 찾습니다:

# tmux 구성 파일 생성
touch ~/.tmux.conf

# 선호하는 텍스트 편집기로 열기
nano ~/.tmux.conf

필수 구성 설정

tmux 경험을 향상시키기 위해 자주 사용하는 설정 예시는 다음과 같습니다:

# 접두사 키를 Ctrl+a로 변경 (기본 Ctrl+b보다 편리)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 마우스 지원 활성화
set -g mouse on

# 창 번호를 1부터 시작 (기본 0 대신)
set -g base-index 1

# 창 분할 키를 더 쉽게 설정
bind-key v split-window -h
bind-key h split-window -v

# 창 이동 키를 더 쉽게 설정
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# 색상 개선
set -g default-terminal "screen-256color"

# 스크롤백 버퍼 크기 설정
set -g history-limit 10000

키 바인딩 커스터마이징

tmux를 더 직관적이고 효율적으로 사용하기 위해 키 바인딩을 커스터마이징할 수 있습니다:

  1. 기본 키 바인딩 문법:

    bind-key key command
    bind key command
    
  2. 자주 사용하는 커스텀 바인딩:

    # 구성 파일 재로드
    bind r source-file ~/.tmux.conf \; display "Config reloaded!"
    
    # 빠른 패널 순환
    unbind ^A
    bind ^A select-pane -t :.+
    
    # 더 직관적인 분할 명령
    bind | split-window -h
    bind - split-window -v
    

구성 파일을 변경한 후에는:

  • tmux를 재시작하거나
  • tmux 실행 중 prefix + r 키를 눌러 구성 파일을 재로드할 수 있습니다 (위 예제에서 재로드 바인딩을 추가한 경우).

tmux 시작하기

설치와 기본 구성을 마쳤다면, tmux를 효과적으로 사용하는 방법을 배워봅시다. 이 섹션에서는 일상적으로 필요한 기본 명령어와 조작법을 다룹니다.

첫 세션 시작하기

tmux 세션을 시작하고 관리하는 기본 명령어는 다음과 같습니다:

# 새 세션 시작
tmux

# 이름을 지정하여 새 세션 시작
tmux new -s mysession

# 모든 세션 목록 보기
tmux ls

# 기존 세션에 연결
tmux attach -t mysession

# 현재 세션 분리 (tmux 내부에서)
# 접두사 키(Ctrl+b 또는 Ctrl+a) 누른 후 d 키

기본 명령어 및 단축키

모든 tmux 명령어는 접두사 키(기본값: Ctrl+b)로 시작합니다. 필수 단축키는 다음과 같습니다:

# 세션 관리
prefix + d    # 세션 분리
prefix + s    # 세션 목록 보기
prefix + $    # 현재 세션 이름 변경

# 창 관리
prefix + c    # 새 창 생성
prefix + n    # 다음 창으로 이동
prefix + p    # 이전 창으로 이동
prefix + ,    # 현재 창 이름 변경
prefix + w    # 창 목록 보기

# 패널 작업
prefix + %    # 세로 분할
prefix + "    # 가로 분할
prefix + o    # 다음 패널로 전환
prefix + x    # 현재 패널 닫기

세션 관리

세션은 tmux에서 가장 상위 조직 단위입니다. 효과적으로 관리하는 방법은 다음과 같습니다:

  1. 세션 생성:

    # 특정 이름으로 새 세션 생성
    tmux new -s development
    
    # 특정 작업 디렉터리로 새 세션 생성
    tmux new -s project -c ~/projects/myproject
    
  2. 여러 세션 관리:

    # 세션 간 전환
    tmux switch -t session_name
    
    # 특정 세션 종료
    tmux kill-session -t session_name
    
    # 현재 세션 제외 모든 세션 종료
    tmux kill-session -a
    
  3. 세션 탐색:

    • prefix + ( : 이전 세션으로 이동
    • prefix + ) : 다음 세션으로 이동
    • prefix + s : 세션 목록 표시 및 선택

고급 기능

tmux는 고급 사용자를 위한 강력한 기능을 제공하여 생산성을 크게 향상시킬 수 있습니다. 몇 가지 고급 기능을 살펴봅시다.

창 관리

tmux의 창은 현대 터미널의 탭과 유사하게 작동합니다. 고급 창 명령어는 다음과 같습니다:

# 고급 창 명령어
prefix + .    # 창 번호 변경
prefix + f    # 이름으로 창 찾기
prefix + &    # 창 종료
prefix + 0-9  # 번호로 창 전환

# 창 위치 교환
swap-window -s 2 -t 1  # 창 2와 1 교환
swap-window -t -1      # 현재 창을 왼쪽으로 이동

패널 작업

패널은 창을 여러 구역으로 나누는 기능입니다. 고급 패널 관리 기법은 다음과 같습니다:

  1. 패널 크기 조절:

    # 접두사 키 후:
    Alt + 방향키    # 해당 방향으로 패널 크기 조절
    
    # 또는 접두사 키를 누른 상태에서:
    Ctrl + 방향키   # 더 큰 단위로 패널 크기 조절
    
  2. 고급 패널 탐색:

    prefix + {    # 현재 패널을 왼쪽으로 이동
    prefix + }    # 현재 패널을 오른쪽으로 이동
    prefix + z    # 패널 확대/복원 토글
    prefix + !    # 패널을 창으로 변환
    
  3. 패널 동기화:

    # 모든 패널에 명령어 동시 전송 토글
    :setw synchronize-panes
    

복사 모드 및 스크롤

복사 모드는 텍스트 스크롤, 검색, 복사를 가능하게 합니다:

  1. 복사 모드 진입 및 탐색:

    prefix + [           # 복사 모드 진입
    q                    # 복사 모드 종료
    Space                # 선택 시작
    Enter                # 선택 복사
    
    # 복사 모드 내 탐색:
    방향키               # 커서 이동
    Page Up/Down         # 페이지 단위 스크롤
    g                    # 맨 위로 이동
    G                    # 맨 아래로 이동
    /                    # 앞으로 검색
    ?                    # 뒤로 검색
    n                    # 다음 검색 결과
    N                    # 이전 검색 결과
    
  2. 고급 복사 작업:

    # vi 모드 활성화로 복사 작업 향상
    set-window-option -g mode-keys vi
    
    # 복사 모드용 커스텀 키 바인딩
    bind-key -T copy-mode-vi v send-keys -X begin-selection
    bind-key -T copy-mode-vi y send-keys -X copy-selection
    
  3. 시스템 클립보드와 통합:

    # Ubuntu에서 xclip 설치:
    sudo apt install xclip
    
    # .tmux.conf에 추가:
    bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -sel clip -i"
    

이러한 고급 기능을 조합하여 강력한 워크플로우를 만들 수 있습니다. 예를 들어:

  • 여러 패널을 설정해 다양한 서비스를 모니터링
  • 동기화된 패널로 여러 서버에 동시에 명령 실행
  • 다양한 개발 작업을 위한 복잡한 창 레이아웃 구성
  • tmux 세션 자동 백업 설정

모범 사례

tmux를 효율적으로 사용하기 위한 좋은 습관과 팁을 알아봅시다.

일반적인 워크플로우

  1. 개발 환경 설정:

    # 개발용 새 세션 생성
    tmux new -s dev
    
    # 일반적인 개발 레이아웃
    # 편집기와 터미널 분할
    tmux split-window -v -p 30  # 70% 편집기, 30% 터미널
    
    # 테스트/서버 실행용 추가 분할
    tmux split-window -h        # 터미널 패널 수평 분할
    
  2. 서버 모니터링 설정:

    # 모니터링 세션 생성
    tmux new -s monitoring
    
    # 다양한 모니터링 작업용 분할
    tmux split-window -h    # 시스템 통계용 분할
    tmux split-window -v    # 로그용 분할
    
    # 모니터링 명령 실행
    # 첫 번째 패널: htop
    # 두 번째 패널: tail -f /var/log/syslog
    # 세 번째 패널: 네트워크 모니터링
    

생산성 팁

  1. 세션 조직화:

    • 설명적인 세션 이름 사용 (예: client1, backend, docs)
    • 관련 작업은 같은 세션 내 다른 창에 배치
    • 일관된 창 이름 규칙 유지
    • 정기적인 세션 정리로 관리 용이
  2. 성능 최적화:

    # .tmux.conf에 추가
    # 이스케이프 타임 지연 감소
    set -sg escape-time 0
    
    # 반응성 향상
    set -g status-interval 1
    
    # 메모리 문제 방지를 위한 세션 히스토리 제한
    set -g history-limit 50000
    
  3. 자동 설정 스크립트:

    #!/bin/bash
    # dev-setup.sh로 저장
    
    # 분리된 상태로 새 세션 생성
    tmux new-session -d -s development
    
    # 창 및 패널 설정
    tmux rename-window -t development:1 'editor'
    tmux send-keys -t development:1 'vim' C-m
    
    tmux new-window -t development:2 -n 'server'
    tmux send-keys -t development:2 'npm run dev' C-m
    
    # 세션 연결
    tmux attach -t development
    

다른 도구와의 통합

  1. 버전 관리 통합:

    • git 작업용 전용 창 생성
    • 여러 저장소 관리를 위한 패널 동기화 사용
    • 자동 상태 확인 설정
  2. 터미널 멀티플렉서 모범 사례:

    # .bashrc 또는 .zshrc에 추가
    # SSH 접속 시 자동으로 tmux 세션 연결
    if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then
        tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux
    fi
    
  3. 원격 개발:

    • 로컬/원격 작업을 위한 중첩 tmux 세션 사용
    • 로컬/원격 세션에 다른 상태 표시줄 색상 설정
    • 중첩 세션을 위한 다른 접두사 키 설정
# 중첩 세션용 (.tmux.conf)
bind-key -n C-a send-prefix    # 내부 세션용
set -g status-bg colour40      # 로컬용 녹색
set -g status-bg colour160     # 원격용 빨강
Install Tmux on Ubuntu

자주 묻는 질문 (FAQ)

Q1: tmux에서 어떻게 종료하나요?

# 방법 1: tmux 완전 종료
exit                  # tmux 창 내에서 입력
# 또는
prefix + d           # 세션 분리 후 백그라운드 실행 유지

# 방법 2: 모든 세션 강제 종료
tmux kill-server

Q2: 마우스 스크롤이 작동하지 않는 이유는 무엇인가요?

최신 tmux 버전에서는 구성 파일에서 마우스 지원을 활성화해야 합니다:

# ~/.tmux.conf에 추가
set -g mouse on

Q3: tmux에서 텍스트를 어떻게 복사하나요?

  1. 마우스 사용 시 (마우스 지원 활성화된 경우):

    • 텍스트를 드래그하여 선택
    • 시스템 클립보드 단축키 사용
  2. 키보드 사용 시:

    prefix + [        # 복사 모드 진입
    Space            # 선택 시작
    Enter            # 선택 복사
    prefix + ]       # 붙여넣기
    

Q4: 잃어버린 tmux 세션을 어떻게 복구하나요?

# 모든 세션 목록 보기
tmux ls

# 마지막 세션에 재접속
tmux attach

# 특정 세션에 연결
tmux attach -t session_name

Q5: tmux에서 패널 크기를 어떻게 조절하나요?

# 접두사 키 + 방향키로 패널 크기 조절
prefix + Up    # 현재 패널 위쪽 확장
prefix + Down  # 현재 패널 아래쪽 확장
prefix + Left  # 현재 패널 왼쪽 확장
prefix + Right # 현재 패널 오른쪽 확장

Q6: 구성 변경 사항을 어떻게 적용하나요?

# 방법 1: tmux 내에서 재로드
prefix + :
source-file ~/.tmux.conf

# 방법 2: 터미널에서 재로드
tmux source-file ~/.tmux.conf

Q7: 패널 간 입력 동기화는 어떻게 하나요?

# tmux 명령 모드에서
:setw synchronize-panes on

# 동기화 해제
:setw synchronize-panes off

Q8: 색상이 제대로 표시되지 않는 이유는 무엇인가요?

~/.tmux.conf에 다음을 추가하세요:

# 256색 지원 활성화
set -g default-terminal "screen-256color"

# 진짜 색상(True Color) 지원 활성화
set-option -sa terminal-overrides ",xterm*:Tc"

Q9: tmux 세션을 저장하고 복원하려면 어떻게 하나요?

tmux-resurrect 플러그인을 사용할 수 있습니다:

# tmux 플러그인 매니저 설치
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# .tmux.conf에 추가:
set -g @plugin 'tmux-plugins/tmux-resurrect'

# 세션 저장
prefix + Ctrl-s

# 세션 복원
prefix + Ctrl-r

Q10: 상태 표시줄 모양을 어떻게 변경하나요?

# ~/.tmux.conf에 추가
# 상태 표시줄 배경색 변경
set -g status-bg black

# 상태 표시줄 전경색 변경
set -g status-fg white

# 현재 창 스타일 변경
set-window-option -g window-status-current-style bg=red,fg=white,bold

Q11: 중첩된 tmux 세션을 어떻게 처리하나요?

# .tmux.conf에 추가하여 중첩 세션용 다른 접두사 사용
bind-key -n C-a send-prefix    # 내부 세션용
set -g status-bg blue          # 중첩 세션용 다른 색상

Q12: tmux에서 기능키가 작동하지 않아요?

# ~/.tmux.conf에 추가
set-option -g xterm-keys on
set-window-option -g xterm-keys on