Ubuntu에서 tmux 설치 및 사용법: 완벽 가이드 2025
소개
tmux(터미널 멀티플렉서)는 Ubuntu 및 기타 유닉스 계열 시스템에서 터미널 경험을 향상시키는 강력한 명령줄 도구입니다. 하나의 창 안에서 여러 터미널 세션을 생성할 수 있어 개발자, 시스템 관리자, 파워 유저에게 매우 유용한 도구입니다.
tmux란 무엇인가요?
tmux는 터미널 멀티플렉서로서 다음을 가능하게 합니다:
- 하나의 창 안에서 여러 터미널 세션 생성
- SSH 연결이 끊겨도 프로그램 계속 실행 유지
- 터미널 창을 여러 개의 패널로 분할
- 서로 다른 터미널 세션 간 원활한 전환
- 다른 사용자와 터미널 세션 공유
tmux 사용의 장점
Ubuntu 서버나 로컬 머신에서 작업할 때 tmux는 다음과 같은 강력한 이점을 제공합니다:
-
지속적인 세션 유지: SSH 연결이 끊기거나 터미널을 실수로 닫아도 작업이 계속 실행됩니다. 세션에 다시 연결하면 이전 상태 그대로 작업을 이어갈 수 있습니다.
-
생산성 향상: 여러 터미널 창을 동시에 사용하면서 데스크톱이 복잡해지지 않습니다. 다양한 작업을 쉽게 전환하며 명확한 작업 개요를 유지할 수 있습니다.
-
협업 강화: 팀원과 터미널 세션을 공유하여 페어 프로그래밍이나 공동 문제 해결에 적합합니다.
시스템 요구사항
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
버전 비교
설치 방법별 차이점을 비교해보겠습니다:
-
APT 설치:
- 장점: 설치 및 업그레이드가 쉽고, 안정적인 버전 제공, 의존성 자동 관리
- 단점: 최신 버전이 아닐 수 있음
- Ubuntu 저장소 내 현재 버전: 보통 최신 버전보다 1~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를 더 직관적이고 효율적으로 사용하기 위해 키 바인딩을 커스터마이징할 수 있습니다:
-
기본 키 바인딩 문법:
bind-key key command bind key command
-
자주 사용하는 커스텀 바인딩:
# 구성 파일 재로드 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에서 가장 상위 조직 단위입니다. 효과적으로 관리하는 방법은 다음과 같습니다:
-
세션 생성:
# 특정 이름으로 새 세션 생성 tmux new -s development # 특정 작업 디렉터리로 새 세션 생성 tmux new -s project -c ~/projects/myproject
-
여러 세션 관리:
# 세션 간 전환 tmux switch -t session_name # 특정 세션 종료 tmux kill-session -t session_name # 현재 세션 제외 모든 세션 종료 tmux kill-session -a
-
세션 탐색:
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 # 현재 창을 왼쪽으로 이동
패널 작업
패널은 창을 여러 구역으로 나누는 기능입니다. 고급 패널 관리 기법은 다음과 같습니다:
-
패널 크기 조절:
# 접두사 키 후: Alt + 방향키 # 해당 방향으로 패널 크기 조절 # 또는 접두사 키를 누른 상태에서: Ctrl + 방향키 # 더 큰 단위로 패널 크기 조절
-
고급 패널 탐색:
prefix + { # 현재 패널을 왼쪽으로 이동 prefix + } # 현재 패널을 오른쪽으로 이동 prefix + z # 패널 확대/복원 토글 prefix + ! # 패널을 창으로 변환
-
패널 동기화:
# 모든 패널에 명령어 동시 전송 토글 :setw synchronize-panes
복사 모드 및 스크롤
복사 모드는 텍스트 스크롤, 검색, 복사를 가능하게 합니다:
-
복사 모드 진입 및 탐색:
prefix + [ # 복사 모드 진입 q # 복사 모드 종료 Space # 선택 시작 Enter # 선택 복사 # 복사 모드 내 탐색: 방향키 # 커서 이동 Page Up/Down # 페이지 단위 스크롤 g # 맨 위로 이동 G # 맨 아래로 이동 / # 앞으로 검색 ? # 뒤로 검색 n # 다음 검색 결과 N # 이전 검색 결과
-
고급 복사 작업:
# 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
-
시스템 클립보드와 통합:
# 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를 효율적으로 사용하기 위한 좋은 습관과 팁을 알아봅시다.
일반적인 워크플로우
-
개발 환경 설정:
# 개발용 새 세션 생성 tmux new -s dev # 일반적인 개발 레이아웃 # 편집기와 터미널 분할 tmux split-window -v -p 30 # 70% 편집기, 30% 터미널 # 테스트/서버 실행용 추가 분할 tmux split-window -h # 터미널 패널 수평 분할
-
서버 모니터링 설정:
# 모니터링 세션 생성 tmux new -s monitoring # 다양한 모니터링 작업용 분할 tmux split-window -h # 시스템 통계용 분할 tmux split-window -v # 로그용 분할 # 모니터링 명령 실행 # 첫 번째 패널: htop # 두 번째 패널: tail -f /var/log/syslog # 세 번째 패널: 네트워크 모니터링
생산성 팁
-
세션 조직화:
- 설명적인 세션 이름 사용 (예:
client1
,backend
,docs
) - 관련 작업은 같은 세션 내 다른 창에 배치
- 일관된 창 이름 규칙 유지
- 정기적인 세션 정리로 관리 용이
- 설명적인 세션 이름 사용 (예:
-
성능 최적화:
# .tmux.conf에 추가 # 이스케이프 타임 지연 감소 set -sg escape-time 0 # 반응성 향상 set -g status-interval 1 # 메모리 문제 방지를 위한 세션 히스토리 제한 set -g history-limit 50000
-
자동 설정 스크립트:
#!/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
다른 도구와의 통합
-
버전 관리 통합:
- git 작업용 전용 창 생성
- 여러 저장소 관리를 위한 패널 동기화 사용
- 자동 상태 확인 설정
-
터미널 멀티플렉서 모범 사례:
# .bashrc 또는 .zshrc에 추가 # SSH 접속 시 자동으로 tmux 세션 연결 if [[ -z "$TMUX" ]] && [ "$SSH_CONNECTION" != "" ]; then tmux attach-session -t ssh_tmux || tmux new-session -s ssh_tmux fi
-
원격 개발:
- 로컬/원격 작업을 위한 중첩 tmux 세션 사용
- 로컬/원격 세션에 다른 상태 표시줄 색상 설정
- 중첩 세션을 위한 다른 접두사 키 설정
# 중첩 세션용 (.tmux.conf)
bind-key -n C-a send-prefix # 내부 세션용
set -g status-bg colour40 # 로컬용 녹색
set -g status-bg colour160 # 원격용 빨강

자주 묻는 질문 (FAQ)
Q1: tmux에서 어떻게 종료하나요?
# 방법 1: tmux 완전 종료
exit # tmux 창 내에서 입력
# 또는
prefix + d # 세션 분리 후 백그라운드 실행 유지
# 방법 2: 모든 세션 강제 종료
tmux kill-server
Q2: 마우스 스크롤이 작동하지 않는 이유는 무엇인가요?
최신 tmux 버전에서는 구성 파일에서 마우스 지원을 활성화해야 합니다:
# ~/.tmux.conf에 추가
set -g mouse on
Q3: tmux에서 텍스트를 어떻게 복사하나요?
-
마우스 사용 시 (마우스 지원 활성화된 경우):
- 텍스트를 드래그하여 선택
- 시스템 클립보드 단축키 사용
-
키보드 사용 시:
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