tmux 사용법 완벽 가이드: 터미널 작업 효율 200% 높이는 방법 🖥️

리눅스 서버에서 작업하다 보면 SSH 연결이 끊어져서 진행 중이던 작업이 날아간 경험, 다들 한 번쯤 있으시죠? 😱 특히 딥러닝 모델 학습처럼 오래 걸리는 작업을 돌려놓고 터미널을 닫았다가 낭패를 본 분들도 많을 거예요.

오늘은 이런 문제를 완벽하게 해결해주는 tmux에 대해 알아볼게요. tmux를 사용하면 터미널을 닫아도 작업이 계속 실행되고, 하나의 화면에서 여러 터미널을 동시에 관리할 수 있답니다! 🚀

tmux란 무엇인가요? 🤔

tmuxTerminal Multiplexer의 약자로, 하나의 터미널 창에서 여러 개의 터미널 세션을 생성하고 관리할 수 있게 해주는 도구예요. 쉽게 말해서 터미널을 여러 개로 쪼개서 동시에 사용할 수 있게 해주는 마법 같은 프로그램이죠! ✨

tmux의 가장 큰 장점은 세션 유지 기능이에요. SSH 연결이 끊어지거나 터미널을 닫아도 tmux 세션은 백그라운드에서 계속 실행됩니다. 나중에 다시 접속해서 세션에 연결하면 마치 아무 일도 없었던 것처럼 작업을 이어갈 수 있어요!

tmux 설치하기 📦

대부분의 리눅스 배포판에서 패키지 관리자를 통해 쉽게 설치할 수 있어요.

Ubuntu / Debian

sudo apt update
sudo apt install tmux

CentOS / RHEL / Fedora

sudo yum install tmux
# 또는
sudo dnf install tmux

macOS

brew install tmux

설치가 완료되면 tmux -V 명령어로 버전을 확인할 수 있어요. 정상적으로 설치되었다면 버전 정보가 출력됩니다! 👍

tmux 핵심 개념: Session, Window, Pane 🏗️

tmux를 효과적으로 사용하려면 세 가지 핵심 개념을 이해해야 해요.

1. Session (세션) 📁

세션은 tmux의 가장 큰 단위예요. 하나의 프로젝트나 작업 단위로 세션을 만들면 편리해요. 예를 들어 ‘web-server’, ‘database’, ‘monitoring’ 같은 이름으로 세션을 만들어 관리할 수 있죠.

2. Window (윈도우) 🪟

하나의 세션 안에는 여러 개의 윈도우가 있을 수 있어요. 브라우저의 탭과 비슷한 개념이라고 생각하시면 돼요. 각 윈도우는 독립적인 터미널 화면을 가지고 있습니다.

3. Pane (패인) 📐

하나의 윈도우를 여러 개로 분할한 것이 패인이에요. 화면을 가로 또는 세로로 나눠서 여러 터미널을 동시에 볼 수 있어요. 왼쪽에서 코드를 편집하면서 오른쪽에서 로그를 확인하는 식으로 활용하면 정말 편리하답니다! 💡

tmux 기본 사용법 🎮

이제 본격적으로 tmux를 사용해볼게요. tmux의 모든 단축키는 Prefix 키를 먼저 누른 후에 동작해요. 기본 Prefix 키는 Ctrl + b입니다.

세션 관련 명령어 🔧

# 새 세션 시작
tmux

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

# 세션 목록 보기
tmux ls

# 세션에 다시 연결하기
tmux attach -t 세션이름

# 세션에서 분리하기 (detach)
Ctrl + b, d

# 세션 이름 변경
Ctrl + b, $

# 세션 종료
exit

윈도우 관련 단축키 🪟

# 새 윈도우 생성
Ctrl + b, c

# 다음 윈도우로 이동
Ctrl + b, n

# 이전 윈도우로 이동
Ctrl + b, p

# 특정 번호의 윈도우로 이동
Ctrl + b, 0~9

# 윈도우 목록 보기
Ctrl + b, w

# 윈도우 이름 변경
Ctrl + b, ,

# 현재 윈도우 닫기
Ctrl + b, &

패인 관련 단축키 📐

# 화면 세로 분할
Ctrl + b, %

# 화면 가로 분할
Ctrl + b, "

# 패인 간 이동
Ctrl + b, 방향키

# 패인 크기 조절
Ctrl + b, Ctrl + 방향키

# 현재 패인 확대/축소 토글
Ctrl + b, z

# 현재 패인 닫기
Ctrl + b, x

# 패인 위치 교환
Ctrl + b, {  또는  }

실전 활용 예시: 딥러닝 학습 세션 만들기 🧠

딥러닝 모델 학습할 때 tmux가 정말 유용해요. 학습이 며칠씩 걸리는 경우가 많은데, tmux 없이는 터미널을 계속 켜놓거나 nohup을 써야 했거든요. tmux를 사용하면 훨씬 편리하게 관리할 수 있어요!

# 딥러닝 학습용 세션 생성
tmux new -s deep_learning

# 가상환경 활성화
conda activate myenv

# 학습 시작
python train.py

# 세션에서 분리 (학습은 계속 진행됨)
Ctrl + b, d

# 나중에 다시 연결
tmux attach -t deep_learning

이렇게 하면 SSH 연결이 끊어져도, 심지어 컴퓨터를 꺼도(서버는 켜져있다면) 학습은 계속 진행돼요! 나중에 다시 접속해서 tmux attach 하면 학습 진행 상황을 바로 확인할 수 있답니다. 🎉

tmux 설정 커스터마이징 ⚙️

tmux는 ~/.tmux.conf 파일을 통해 다양하게 커스터마이징할 수 있어요. 자주 사용하는 설정들을 소개할게요!

# ~/.tmux.conf

# 마우스 사용 가능하게 설정
set -g mouse on

# Prefix 키를 Ctrl+a로 변경 (선택사항)
# set -g prefix C-a
# unbind C-b

# 패인 분할 단축키를 직관적으로 변경
bind | split-window -h
bind - split-window -v

# 패인 이동을 vim 스타일로
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# 상태바 색상 변경
set -g status-bg colour235
set -g status-fg colour136

# 윈도우 번호를 1부터 시작
set -g base-index 1
setw -g pane-base-index 1

설정 파일을 수정한 후에는 tmux 안에서 Ctrl + b:source-file ~/.tmux.conf를 입력하거나, 새 세션을 시작하면 적용됩니다! 특히 마우스 설정은 정말 추천드려요. 패인 크기 조절이나 스크롤이 훨씬 편해진답니다. 🖱️

자주 쓰는 tmux 단축키 치트시트 📋

마지막으로 자주 사용하는 단축키를 정리해드릴게요. 이것만 외워도 tmux 기본 사용에는 문제없어요!

기능단축키
세션 분리 (detach)Ctrl + b, d
새 윈도우Ctrl + b, c
윈도우 이동Ctrl + b, n / p / 0-9
세로 분할Ctrl + b, %
가로 분할Ctrl + b, “
패인 이동Ctrl + b, 방향키
패인 확대Ctrl + b, z
패인 닫기Ctrl + b, x
단축키 목록Ctrl + b, ?
스크롤 모드Ctrl + b, [

마무리 🎬

tmux는 처음에는 조금 복잡해 보일 수 있지만, 한번 익숙해지면 터미널 작업 효율이 정말 크게 올라가요. 특히 서버에서 장시간 작업을 하거나, 여러 프로세스를 동시에 모니터링해야 할 때 필수 도구라고 할 수 있죠!

처음에는 세션 시작(tmux new -s 이름), 분리(Ctrl + b, d), 재연결(tmux attach -t 이름) 이 세 가지만 기억하셔도 충분해요. 나머지는 사용하면서 자연스럽게 익히시면 됩니다! 💪

혹시 tmux 사용 중 궁금한 점이 있으시면 댓글로 남겨주세요. 다음에는 tmux 플러그인과 더 고급 설정에 대해서도 다뤄볼게요! 😊