터미널의 강력한 도구, tmux 완벽 가이드: 세션 관리부터 생산성 향상까지

SB신범
5분 읽기
조회수 로딩 중...

터미널의 강력한 도구, tmux 완벽 가이드: 세션 관리부터 생산성 향상까지

개발자나 시스템 관리자라면 터미널에서 작업하는 시간이 상당히 많을 것입니다. 특히 원격 서버를 관리하거나 여러 프로젝트를 동시에 진행할 때, 일반 터미널의 한계를 느끼게 되죠. 여기서 tmux가 등장합니다. 단순한 터미널 분할을 넘어 작업의 지속성과 생산성을 혁신적으로 향상시켜 주는 도구입니다.

이 글에서는 tmux의 기본부터 고급 활용법까지 체계적으로 살펴보겠습니다.

tmux 공식링크

1. tmux란? 기본 개념 이해하기

**tmux(Terminal MUltipleXer)**는 하나의 터미널 창에서 여러 개의 세션, 창, 패널을 나누어 사용할 수 있게 해주는 프로그램입니다. 세션을 분리하면 네트워크 연결이 끊겨도 실행 중인 작업을 잃지 않고 복구할 수 있어, 원격 서버 작업에 매우 유용합니다.

tmux는 다음과 같은 계층 구조로 이루어져 있습니다:

  • 세션(Session): 독립적인 작업 환경, 여러 창을 포함
  • 창(Window): 전체 화면을 차지하는 작업 단위, 여러 패널 포함 가능
  • 패널(Pane): 창을 분할한 작업 공간

이러한 구조를 활용하면 복잡한 작업 환경도 효율적으로 구성할 수 있습니다.

2. 설치 및 기본 사용법

설치하기

대부분의 리눅스 배포판에서는 패키지 매니저를 통해 쉽게 설치할 수 있습니다: 기본 설치 링크

bash
1sudo apt update && sudo apt install tmux # 우분투/데비안 2sudo dnf install tmux # 페도라 3brew install tmux # macOS (Homebrew)

세션 시작 및 관리

위명령어 처럼 작성하면 아래와 같이, 초록색 줄로 tmux 내 가상화 터미널로 접속되어있는 모습을 볼 수가 있습니다.

명령어설명
tmux새 익명 세션 시작
tmux new -s mysession'mysession'이라는 이름의 세션 시작
Ctrl-b + d현재 세션 분리(detach)
tmux attach -t mysession이름 있는 세션에 재접속
tmux ls현재 실행 중인 모든 세션 목록
tmux kill-session -t mysession특정 세션 종료

📌 알아두세요: tmux의 모든 명령어는 프리픽스 키(Ctrl-b) 후에 입력합니다. 이 프리픽스는 나중에 설정에서 변경할 수 있습니다.

3. 창(Window)과 패널(Pane) 다루기

창(Window) 관리

명령어설명
Ctrl-b + c새 창 생성
Ctrl-b + ,현재 창 이름 변경
Ctrl-b + w창 리스트 보기 (메뉴 탐색)
Ctrl-b + 숫자해당 번호의 창으로 이동
Ctrl-b + n다음 창으로 이동
Ctrl-b + p이전 창으로 이동
Ctrl-b + &현재 창 종료

패널(Pane) 관리

명령어설명
Ctrl-b + %수직 분할
Ctrl-b + "수평 분할
Ctrl-b + 화살표다른 패널로 이동
Ctrl-b + z패널 최대화/복원
Ctrl-b + {현재 패널을 왼쪽으로 이동
Ctrl-b + }현재 패널을 오른쪽으로 이동
Ctrl-b + Ctrl-화살표패널 크기 조절
Ctrl-b + x현재 패널 종료

참고링크 : medium/hackermoon

4. 복사 및 스크롤 모드

tmux에서는 일반 터미널처럼 마우스로 텍스트를 선택하여 복사할 수 없습니다. 대신 고유한 복사 모드를 제공합니다.

복사 모드 설정 (vi 스타일)

.tmux.conf 파일에 다음 내용을 추가하면 vi 스타일의 키 바인딩을 사용할 수 있습니다:

bash
1set -g mouse on 2setw -g mode-keys vi 3bind -T copy-mode-vi v send -X begin-selection 4bind -T copy-mode-vi y send -X copy-selection 5bind-key p paste-buffer

복사 & 붙여넣기 흐름

동작명령어
복사모드 진입Ctrl-b + [
이동방향키 / hjkl (vi 모드)
선택 시작v
선택 종료 및 복사y
붙여넣기Ctrl-b + p

5. tmux 커스터마이징하기

tmux는 .tmux.conf 파일을 통해 다양한 설정을 커스터마이징할 수 있습니다. 이 파일은 홈 디렉토리에 위치합니다. (~/.tmux.conf)

상태바 커스터마이징

bash
1# 상태바 설정 2set -g status on 3set -g status-interval 5 4set -g status-justify centre 5set -g status-left-length 60 6set -g status-right-length 90 7set -g status-left "#[fg=green]#H" 8set -g status-right "#[fg=yellow]%Y-%m-%d #[fg=cyan]%H:%M:%S" 9setw -g automatic-rename on 10 11# 색상 테마 설정 12set -g default-terminal "screen-256color" 13set -g status-style fg=white,bg=black

💡 #H: 호스트 이름, %Y-%m-%d: 날짜, %H:%M:%S: 시간

키 바인딩 변경 (vim 사용자용)

많은 vim 사용자들은 Ctrl-b 대신 Ctrl-a를 프리픽스로 선호합니다:

bash
1# 프리픽스 키 변경 2unbind C-b 3set -g prefix C-a 4bind C-a send-prefix 5 6# vim 스타일 패널 이동 7bind h select-pane -L 8bind j select-pane -D 9bind k select-pane -U 10bind l select-pane -R

6. 고급 기능: 자동 재접속 및 세션 관리

tmux 세션을 자동으로 복원하는 스크립트

개발 환경을 자동으로 설정하는 스크립트 예시입니다:

bash
1#!/bin/bash 2SESSION=myproject 3 4tmux has-session -t $SESSION 2>/dev/null 5if [ $? != 0 ]; then 6 # 새 세션 생성 7 tmux new-session -d -s $SESSION 8 9 # 첫 번째 창: 코드 에디터 10 tmux send-keys -t $SESSION "cd ~/project" C-m 11 tmux send-keys -t $SESSION "vim ." C-m 12 13 # 두 번째 창: 서버 14 tmux new-window -t $SESSION:1 -n "Server" 15 tmux send-keys -t $SESSION:1 "cd ~/project && npm start" C-m 16 17 # 세 번째 창: 터미널 18 tmux new-window -t $SESSION:2 -n "Terminal" 19 tmux send-keys -t $SESSION:2 "cd ~/project" C-m 20 21 # 첫 번째 창으로 돌아가기 22 tmux select-window -t $SESSION:0 23fi 24 25tmux attach -t $SESSION

실행 방법:

bash
1chmod +x start_tmux.sh 2./start_tmux.sh

7. 플러그인 시스템(TPM) 활용하기

tmux 플러그인 매니저(TPM)를 사용하면 다양한 플러그인을 쉽게 관리할 수 있습니다.

설치

bash
1git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

.tmux.conf에 추가

bash
1# 플러그인 관리 2set -g @plugin 'tmux-plugins/tpm' 3set -g @plugin 'tmux-plugins/tmux-sensible' 4set -g @plugin 'tmux-plugins/tmux-resurrect' # 세션 저장 및 복구 5set -g @plugin 'tmux-plugins/tmux-continuum' # 자동 저장 6set -g @plugin 'dracula/tmux' # 드라큘라 테마 7 8# 플러그인 초기화 (마지막에 위치해야 함) 9run '~/.tmux/plugins/tpm/tpm'

주요 플러그인 소개

  • tmux-resurrect: 세션 저장 및 복구
  • tmux-continuum: 세션 자동 저장 및 복구
  • tmux-yank: 시스템 클립보드와 통합
  • tmux-sidebar: 디렉토리 트리 사이드바
  • dracula/tmux: 드라큘라 테마

플러그인 관리

명령어기능
Ctrl-b + I플러그인 설치
Ctrl-b + U플러그인 업데이트
Ctrl-b + Alt-u사용하지 않는 플러그인 제거

8. 활용 사례 및 팁

원격 서버 작업

원격 서버에서 작업할 때, 네트워크 연결이 끊겨도 진행 중인 작업을 잃지 않을 수 있습니다:

bash
1# 서버 접속 2ssh user@server 3 4# tmux 세션 시작 5tmux new -s server-work 6 7# 작업 후 세션 분리 8# Ctrl-b + d 9 10# 네트워크 재연결 후 11ssh user@server 12tmux attach -t server-work

멀티 프로젝트 개발 환경

여러 프로젝트를 동시에 관리해야 할 때:

bash
1# 첫 번째 프로젝트 세션 2tmux new -s project1 3# Ctrl-b + d로 분리 4 5# 두 번째 프로젝트 세션 6tmux new -s project2 7# Ctrl-b + d로 분리 8 9# 세션 목록 확인 10tmux ls 11 12# 원하는 세션에 접속 13tmux attach -t project1

로그 모니터링

여러 로그 파일을 동시에 모니터링할 때:

bash
1tmux new -s monitoring 2# 창 분할 3# Ctrl-b + % 4# Ctrl-b + " 5 6# 각 패널에서 로그 모니터링 7# 패널 1: tail -f /var/log/syslog 8# 패널 2: tail -f /var/log/apache2/error.log 9# 패널 3: htop

지속적인 작업 (장기 실행 프로세스)

네트워크 연결과 관계없이 계속 실행되어야 하는 프로세스:

bash
1tmux new -s long-process 2# 데이터 처리 시작 3python process_large_data.py 4# Ctrl-b + d로 분리하고 로그아웃해도 계속 실행됨

9. 자주 겪는 문제와 해결방법

복사-붙여넣기가 작동하지 않을 때

시스템 클립보드와 tmux 클립보드가 연동되지 않는 경우:

bash
1# .tmux.conf에 추가 2set -g set-clipboard on

색상이 제대로 표시되지 않을 때

일부 프로그램에서 색상이 제대로 표시되지 않는 경우:

bash
1# .tmux.conf에 추가 2set -g default-terminal "screen-256color" 3set -ag terminal-overrides ",xterm-256color:RGB"

마우스 스크롤이 작동하지 않을 때

bash
1# .tmux.conf에 추가 2set -g mouse on

마무리

tmux는 한 번 익숙해지면 SSH 접속, 서버 관리, 로그 모니터링, 개발환경 유지 등 거의 모든 터미널 기반 작업의 생산성을 폭발적으로 향상시켜 줍니다. 초기 학습 곡선은 있지만, 투자한 시간 대비 얻는 효율성 향상은 매우 큽니다.

tmux를 통해 터미널 작업의 한계를 뛰어넘고, 더 효율적인 개발 환경을 구축해보세요. 특히 원격 서버를 자주 다루는 개발자나 시스템 관리자에게는 필수 도구라고 할 수 있습니다.

여러분만의 .tmux.conf 설정을 만들고 공유하는 것도 좋은 방법입니다. 다양한 개발자들의 설정을 참고하여 자신에게 가장 적합한 환경을 구축해보세요!