tmux
tmux(Terminal Multiplexer)는 단일 터미널 창이나 원격 세션(SSH 등) 안에서 여러 개의 독립적인 터미널 세션을 생성하고 제어할 수 있게 해주는 오픈소스 도구다. OpenBSD 프로젝트의 일환으로 니콜라스 메리엇(Nicholas Marriott)이 개발했다. (출처: OpenBSD Manual Pages, tmux(1), man.openbsd.org / GitHub tmux/tmux 공식 리포지토리)
주요 기능은 다음과 같다.
- 세션 유지 (Detach & Attach): 원격 서버 작업 중 네트워크가 끊기거나 터미널 창을 닫아도
tmux세션은 백그라운드에서 계속 실행된다. 이후 다시 접속해 작업하던 상태를 그대로 복구할 수 있다. (출처: Red Hat Enable Sysadmin, “A beginner’s guide to tmux”) - 화면 분할 (Window & Pane): 하나의 화면을 가로 및 세로로 쪼개어(Pane) 여러 작업을 동시에 모니터링하거나, 탭 개념의 창(Window)을 여러 개 띄워 전환할 수 있다. (출처: Brian P. Hogan, tmux 2: Productive Mouse-Free Development, The Pragmatic Programmers)
계층 구조
tmux는 세 가지 계층으로 작동한다. (출처: ArchWiki, “tmux”, wiki.archlinux.org)
- Session (세션):
tmux가 관리하는 가장 큰 단위의 작업 공간이다. 프로젝트 단위로 생성해서 관리하는 것이 일반적이다. - Window (윈도우): 세션 내부에 존재하는 탭과 같은 개념이다. 화면 전체를 차지하며 하나의 세션 안에 여러 윈도우를 둘 수 있다.
- Pane (페인): 하나의 윈도우 화면을 상하좌우로 분할한 작은 구역이다. 각 페인은 독립된 셸(Shell)로 작동한다.
유사 도구 비교 (tmux vs GNU Screen)
기존에 널리 쓰이던 터미널 멀티플렉서인 GNU Screen과의 기능적 차이는 아래 표와 같다. (출처: Linuxize, “Tmux vs. Screen”; DigitalOcean Community Tutorials)
| 비교 항목 | tmux | GNU Screen |
|---|---|---|
| 개발 및 라이선스 | OpenBSD 기반 / ISC 라이선스 | GNU 프로젝트 / GPL 라이선스 |
| 아키텍처 | 클라이언트-서버 모델 (세션 간 창 이동 가능) | 단일 프로세스 기반 (세션 간 완전 격리) |
| 화면 분할 | 수직/수평 분할 기본 지원, 레이아웃 조정 용이 | 버전에 따라 수직 분할 제한적, 설정이 복잡함 |
| 상태 표시줄 (Status Bar) | 기본 활성화, 스크립트 및 플러그인 커스텀 용이 | 기본 비활성화, 설정 구문이 난해함 |
| 설정 파일 | ~/.tmux.conf (직관적인 명령어 구조) | ~/.screenrc (상대적으로 구문이 복잡함) |
| 기본 프리픽스 키 (Prefix) | Ctrl + b | Ctrl + a |
주요 기본 단축키
tmux의 모든 단축키는 **프리픽스 키(Ctrl + b)**를 먼저 누른 뒤 손을 떼고 다음 키를 입력하는 방식으로 작동한다. (출처: tmux Cheat Sheet & Quick Reference, tmuxcheatsheet.com)
- 세션 관련 (터미널 명령어 및 단축키)
- 새 세션 생성:
tmux new -s [세션이름] - 세션 목록 확인:
tmux ls - 세션 다시 연결:
tmux attach -t [세션이름] - 세션 분리 (백그라운드 전환):
Ctrl + b누른 후d
- 새 세션 생성:
- 윈도우 (탭) 관련
- 새 윈도우 생성:
Ctrl + b누른 후c - 윈도우 이동 (다음/이전):
Ctrl + b누른 후n/p - 특정 번호 윈도우로 이동:
Ctrl + b누른 후[숫자]
- 새 윈도우 생성:
- 페인 (화면 분할) 관련
- 좌우 분할:
Ctrl + b누른 후% - 상하 분할:
Ctrl + b누른 후" - 페인 간 포커스 이동:
Ctrl + b누른 후방향키 - 현재 페인 닫기:
Ctrl + b누른 후x(또는 셸에서exit입력)
- 좌우 분할:
참고 출처 (Sources)
- OpenBSD Manual Pages:
tmux(1)(https://man.openbsd.org/tmux.1) - GitHub:
tmux/tmuxOfficial Repository & Wiki (https://github.com/tmux/tmux/wiki) - Hogan, Brian P. tmux 2: Productive Mouse-Free Development. The Pragmatic Programmers, 2016.
- Arch Linux Wiki: tmux (https://wiki.archlinux.org/title/Tmux)
- Red Hat Enable Sysadmin: A beginner’s guide to tmux (https://www.redhat.com/sysadmin/introduction-tmux-linux)