| tmux | |
| 개발자 | Nicholas Marriott |
| 최초 출시 | 2007년 11월 20일 |
| 최신 버전 | 3.6a[1] |
| 개발 언어 | C |
| 라이선스 | ISC 라이선스 |
| 운영체제 | 유닉스 계열 |
| 종류 | 터미널 멀티플렉서 |
| 링크 | GitHub |
1. 개요
tmux(티먹스)는 하나의 터미널 화면 안에서 여러 개의 독립된 터미널 세션을 만들고, 접근하고, 제어할 수 있게 해 주는 유닉스 계열용 오픈소스 터미널 멀티플렉서다. 세션을 화면에서 분리(detach)해 백그라운드에서 계속 실행되게 놔두고, 나중에 같은 세션이나 다른 터미널에서 다시 연결(attach)하는 것이 가능해서, 원격 서버 작업이나 오래 걸리는 작업을 다룰 때 특히 널리 쓰인다.2. 역사
tmux는 Nicholas Marriott가 개발해 2007년 11월 20일 처음 공개했다. 원래는 OpenBSD를 위한 프로그램으로 시작되었으며, 그전까지 사실상 표준으로 쓰이던 터미널 멀티플렉서인 GNU Screen(1987년 출시)을 대체할 만한 더 현대적인 대안을 만드는 것이 목표였다. 더 깔끔한 코드베이스와 스크립팅 기능, 직관적인 설정 문법, 더 나은 창·페인 관리 기능을 갖췄다는 평가를 받으며 점차 사용자를 넓혀 갔다.리눅스 배포판 쪽으로는 2009년 말 Ubuntu가 tmux 1.3 버전을 정식 패키지로 채택하면서 보급이 크게 늘었고, 2010년 무렵부터는 macOS의 Homebrew를 통해서도 손쉽게 설치할 수 있게 되면서 개발자들 사이에서 빠르게 자리를 잡았다. 원저장소는 OpenBSD의 CVS 저장소에 있었으나, 이후 개발이 GitHub의 tmux/tmux 저장소로 옮겨져 지금도 Nicholas Marriott 본인과 커뮤니티 기여자들에 의해 활발히 유지보수되고 있다.
3. 특징
3.1. 클라이언트-서버 구조
tmux는 클라이언트-서버 모델로 동작한다는 점에서 GNU Screen과 구조적으로 차이가 있다. 세션·창·페인 전체를 관리하는 tmux 서버 프로세스가 백그라운드에서 하나 떠 있고, 사용자가 실행하는 `tmux` 명령은 이 서버에 소켓으로 접속하는 클라이언트 역할을 한다. 덕분에 터미널 접속이 끊기거나 SSH 연결이 끊어져도 서버 프로세스와 그 안에서 돌아가던 프로그램들은 영향을 받지 않고 계속 실행되며, 나중에 다시 접속(`tmux attach`)하면 끊기기 전 상태 그대로 화면을 이어받을 수 있다.3.2. 계층 구조: 세션·윈도우·페인
tmux의 작업 단위는 세 단계로 나뉜다.- 세션(session): 가장 상위 단위로, 보통 프로젝트나 작업 목적 하나에 대응한다. 세션은 화면에서 분리해도 백그라운드에서 계속 실행된다.
- 윈도우(window): 세션 안에 속한 탭에 해당한다. 하나의 세션 안에 여러 윈도우를 만들어 작업 종류별로 전환하며 쓸 수 있다.
- 페인(pane): 하나의 윈도우를 수직 또는 수평으로 분할한 개별 터미널 영역이다. 한 화면 안에서 여러 터미널을 동시에 띄워 놓고 볼 수 있게 해 준다.