리눅스 서버에서 작업하다 보면 SSH 연결이 끊어져서 진행 중이던 작업이 날아간 경험, 다들 한 번쯤 있으시죠? 😱 특히 딥러닝 모델 학습처럼 오래 걸리는 작업을 돌려놓고 터미널을 닫았다가 낭패를 본 분들도 많을 거예요.
오늘은 이런 문제를 완벽하게 해결해주는 tmux에 대해 알아볼게요. tmux를 사용하면 터미널을 닫아도 작업이 계속 실행되고, 하나의 화면에서 여러 터미널을 동시에 관리할 수 있답니다! 🚀
tmux란 무엇인가요? 🤔
tmux는 Terminal 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 플러그인과 더 고급 설정에 대해서도 다뤄볼게요! 😊