tmux

tmux(Terminal Multiplexer)는 단일 터미널 창이나 원격 세션(SSH 등) 안에서 여러 개의 독립적인 터미널 세션을 생성하고 제어할 수 있게 해주는 오픈소스 도구다. OpenBSD 프로젝트의 일환으로 니콜라스 메리엇(Nicholas Marriott)이 개발했다. (출처: OpenBSD Manual Pages, tmux(1), man.openbsd.org / GitHub tmux/tmux 공식 리포지토리)

주요 기능은 다음과 같다.

  1. 세션 유지 (Detach & Attach): 원격 서버 작업 중 네트워크가 끊기거나 터미널 창을 닫아도 tmux 세션은 백그라운드에서 계속 실행된다. 이후 다시 접속해 작업하던 상태를 그대로 복구할 수 있다. (출처: Red Hat Enable Sysadmin, “A beginner’s guide to tmux”)
  2. 화면 분할 (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)

비교 항목tmuxGNU Screen
개발 및 라이선스OpenBSD 기반 / ISC 라이선스GNU 프로젝트 / GPL 라이선스
아키텍처클라이언트-서버 모델 (세션 간 창 이동 가능)단일 프로세스 기반 (세션 간 완전 격리)
화면 분할수직/수평 분할 기본 지원, 레이아웃 조정 용이버전에 따라 수직 분할 제한적, 설정이 복잡함
상태 표시줄 (Status Bar)기본 활성화, 스크립트 및 플러그인 커스텀 용이기본 비활성화, 설정 구문이 난해함
설정 파일~/.tmux.conf (직관적인 명령어 구조)~/.screenrc (상대적으로 구문이 복잡함)
기본 프리픽스 키 (Prefix)Ctrl + bCtrl + 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)

Entities