01. Tmux란

Tmux는 Terminal Multiplexer의 약자로, 하나의 터미널 안에서 여러 개의 가상 터미널을 생성해 동시에 사용할 수 있는 도구입니다. Tmux를 실행하면 독립적인 세션이 생성되고, 그 안에서 여러 창과 패널을 나눠 다양한 작업을 병렬로 진행할 수 있습니다.

Tmux로 실행한 프로그램은 사용자가 터미널 창을 닫거나 SSH 연결이 끊겨도 서버에서 계속 실행됩니다. 이후에 사용자가 접속(Attach)하면, 작업하던 화면과 상태로 그대로 이어서 작업할 수 있습니다.

02. 리눅스에서 새 탭과의 차이

리눅스에서 흔히 사용하는 새 터미널 탭/창과 Tmux의 큰 차이는 세션이 어디에 붙어 있느냐와 연결이 끊겼을 때 어떻게 되느냐입니다.

  1. 세션 유지
    • 새 탭/창 (Ctrl+T 등)
      • GUI 터미널 프로그램에 종속
      • 터미널 창을 실수로 닫거나, SSH 연결이 끊기면 그 안에서 실행 중이던 프로세스는 즉시 종료됩니다.
    • Tmux
      • 서버에서 돌아가는 별도의 Tmux 서버 프로세스 위에서 세션이 유지
      • 로컬 터미널 창을 닫거나 SSH 연결이 끊겨도 Tmux 세션은 서버에서 살아 있고, 다시 접속해 Attach하면 이전 상태로 복구됩니다.
  2. 원격 작업 (SSH) 효율성
    • 새 탭/창
      • 로컬 PC에서 탭을 여러 개 열고 각 탭마다 서버로 SSH 접속
      • 네트워크가 불안정해 연결이 끊기면, 각 탭에서 하던 작업이 모두 끊기거나 종료될 수 있습니다.
    • Tmux
      • 서버에 SSH로 한 번 접속한 뒤, 그 안에서 Tmux를 실행해 창과 패널을 여러 개로 분할
      • 네트워크가 끊겨도 Tmux는 서버에서 계속 동작하므로, 긴 스캔이나 빌드 작업 결과가 그대로 남습니다.
  3. 화면 분할 및 관리
    • Ctrl+T
      • 주로 탭이나 별도의 창 중심이며, 화면 분할 기능은 터미널 프로그램마다 지원 여부와 단축키가 상이함
    • Tmux
      • 완전한 CLI 기반이며, 모두 키보드로 제어가 가능해, 원격 콘솔 환경에서도 일관된 작업이 가능

03. 언제 무엇을 써야할까?

둘 다 상황에 따라 장단점이 다르므로, 아래와 같이 선택하면 편합니다.

이럴 땐 새 탭/창이 편하다
  • 로컬 PC에서 간단한 명령어 몇 개만 실행하고 바로 끝낼 때
  • 결과나 상태를 오래 유지할 필요가 없을 때
  • 복잡한 단축키나 Tmux 설정을 외우고 싶지 않을 때
이럴 땐 Tmux가 사실상 필수
  • 모의해킹 / Pentesting
    • nmap, masscan, 무차별 대입 공격 등 수 시간 이상 걸리는 작업을 돌릴 때
    • VPN이나 SSH 연결이 끊겨도 스캔과 공격 세션을 그대로 유지하고 싶을 때
    • 한 세션에서 여러 창을 띄워, 한쪽에서는 스캔, 다른 쪽에서는 결과 분석이나 공격 스크립트 실행을 동시에 진행할 때​
  • 서버 관리 / 운영
    • 원격 서버에 접속해 한 패널에서는 로그를 tail로 실시간 모니터링하면서, 다른 패널에서는 설정 파일을 수정하고 서비스를 재시작해야 할 때
    • 서비스를 운영하면서 장기간 떠 있어야 하는 모니터링·백그라운드 작업을 중간에 끊기지 않게 유지하고 싶을 때​
  • 불안정한 네트워크 환경
    • 무선망, 이동 중 테더링, 해외 VPN 등 네트워크가 자주 끊길 수 있는 환경에서 작업할 때
    • 자주 접속이 끊겨도, 다시 서버에 접속해서 tmux attach만 치면 이전 작업 환경을 그대로 복원하고 싶을 때

그래서 단발성·짧은 작업에는 새 탭이 더 단순하고, 장시간·원격·불안정한 네트워크에서의 작업에는 Tmux가 훨씬 안정적이고 강력한 선택지입니다.

04. 설치 방법

Tmux는 대부분의 리눅스 배포판에서 패키지 관리자를 통해 설치가 가능합니다.

sudo apt-get update
sudo apt-get install tmux

설치가 완료되면 터미널에서 tmux 명령을 입력해 실행합니다. 예를 들어, 이름이 test인 새 세션을 생성할 때는 tmux new -s test 처럼 입력합니다.

05. 기본 개념

Tmux 사용을 위한 주요 개념은 아래와 같습니다.

  • 세션(Session): Tmux가 관리하는 가장 큰 실행 단위입니다. tmux 명령으로 실행하면 기본 세션이 생성됩니다. 세션 안에는 여러 창(윈도우)와 패널을 포함할 수 있고, Ctrl+b d로 세션을 분리(Detach) 하면 연결만 끊어지고 세션은 백그라운드에서 계속 실행합니다.
  • 윈도우(Window): 하나의 세션 안에 여러 개의 창이 존재할 수 있으며, 각 창은 탭처럼 독립적인 터미널 화면을 의미합니다. 윈도우 간 전환 시 해당 창의 전체 화면이 바뀌며, 세션 내에서 탭 이동처럼 관리됩니다.
  • 팬(Pane): 각 윈도우는 다시 수직 또는 수평으로 분할해 여러 개의 팬을 생성할 수 있습니다. 분할된 각 팬은 별도의 쉘처럼 독립 동작합니다.

06. 자주 쓰이는 단축키

아래는 기본 접두사인 Ctrl + b 이후 사용되는 키 조합입니다. 기본 접두사는 원한다면 ~/.tmux.conf 파일 내 set -g prefix <키> 등으로 변경이 가능합니다.

기능 단축키 (prefix는 Ctrl+b)
새 세션 생성 터미널에서 tmux new -s <세션명> 또는 tmux
세션 분리(Detach) Ctrl+b, d (세션을 백그라운드로)
세션 재접속(Attach) 터미널에서 tmux attach -t <세션명>
새 윈도우 생성 Ctrl+b, c (현재 세션에 새 탭 생성)
윈도우 이름 변경 Ctrl+b, , (쉼표)
윈도우 닫기 Ctrl+b, & 또는 exit (현재 윈도우 종료)
다음 윈도우 이동 Ctrl+b, n
이전 윈도우 이동 Ctrl+b, p
마지막 윈도우 이동 Ctrl+b, l
특정 윈도우 이동 Ctrl+b, 0-9 (숫자)
세로 분할 (Pane) Ctrl+b, % (윈도우를 왼쪽-오른쪽으로 분할)
가로 분할 (Pane) Ctrl+b, " (윈도우를 위아래로 분할)
팬(Pane) 전환 Ctrl+b, o 또는 방향키 (위치 순환)
팬 닫기 Ctrl+b, x 또는 exit (현재 팬 종료)
복사 모드 (스크롤) Ctrl+b, [ (버퍼 스크롤모드 진입)
붙여넣기 (Paste) Ctrl+b, ] (복사 버퍼 내용 붙여넣기)
명령 프롬프트 Ctrl+b, : (tmux 명령 모드)
모든 키 바인딩 보기 Ctrl+b, ? (단축키 목록 표시)

07. 예제

아래는 Tmux를 사용한 간단한 예시 작업입니다.

새로운 세션 생성

tmux new -s test
  • 새로운 Tmux 세션(test)가 생성되어 현재 터미널을 제어합니다.

윈도우 분할

  • 터미널 안에서 분할하려면 접두사(Ctrl+b) 누른 뒤 %를 입력해 세로 분할 하거나, "(큰따옴표)로 가로 분할이 가능합니다.
  • 터미널 명령으로도 가능합니다.
tmux split-window -h   # -h: horizontal (좌우로 분할)
tmux split-window -v   # -v: vertical (상하로 분할)

백그라운드

Tmux 내에서 Ctrl + b를 누른 뒤 d를 입력한다면 세션을 분리(Detach) 합니다. 이렇게하면 Tmux는 백그라운드에서 계속해서 실행되고 있습니다.

세션 재접속

나중에 동일한 세션으로 접근을 하고 싶다면 다음과 같이 입력합니다.

tmux attach -t test

이를 통해 다시 세션으로 돌아가 작업을 이어나갈 수 있습니다.