tmux 사용법과 동작 원리 완벽 가이드: 세션 관리부터 화면 분할까지

개요

tmux는 SSH 연결이 끊어져도 백그라운드에서 작업을 안전하게 유지하고 터미널 화면을 자유롭게 분할할 수 있는 터미널 멀티플렉서입니다. 세션, 윈도우, 팬(Pane)으로 이어지는 tmux의 계층 구조와 핵심 명령어 동작 원리를 단계별로 알아봅니다.

1. tmux 패키지 설치 및 환경 구성

tmux 실습을 진행하기 위해 패키지 목록을 최신 상태로 갱신하고 tmux 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y tmux

tmux -V 명령어는 시스템에 설치된 tmux의 버전을 확인하여 정상적으로 설치되었는지 검증합니다.
⚙️ [주요 옵션]

-V : 현재 설치된 tmux 버전을 출력합니다.
-2 : 터미널이 256 색상을 지원하도록 강제 설정합니다.
-u : UTF-8 인코딩 지원을 강제로 활성화합니다.
-f : 기본 설정 파일 대신 지정한 경로의 설정 파일을 적용합니다.
-L : 기본 소켓 대신 지정한 소켓 이름을 사용하여 독립된 환경을 구성합니다.

tmux -V

2. tmux 세션 생성 및 목록 관리

tmux new-session -d -s work-session 명령어는 터미널을 즉시 전환하지 않고 백그라운드에서 work-session이라는 이름의 새로운 세션을 생성합니다.
세션에 바로 연결(attach)하지 않는 분리(-d) 모드로 동작하여 현재 진행 중인 셸 작업을 방해하지 않고 독립된 작업 공간을 마련할 수 있습니다.

tmux new-session -d -s work-session

tmux new-session -d -s monitor-session 'top' 명령어는 monitor-session이라는 백그라운드 세션을 생성함과 동시에 내부에서 top 명령어를 자동으로 실행합니다.
기본 셸 대신 특정 프로세스나 모니터링 도구를 세션 시작과 함께 상시 동작시키고자 할 때 유용하게 활용할 수 있습니다.

tmux new-session -d -s monitor-session ’top’

tmux list-sessions 명령어는 현재 시스템에서 실행 중인 모든 tmux 세션의 목록과 활성화 상태를 확인합니다.
실행 결과를 통해 앞서 백그라운드로 생성한 monitor-session과 work-session이 각각 1개의 윈도우를 보유한 상태로 정상 유지되고 있음을 알 수 있습니다.

tmux list-sessions

3. 윈도우 및 팬(Pane) 분할과 계층 구조 확인

tmux split-window -t work-session -h 명령어는 work-session 세션의 활성 윈도우를 좌우(수평)로 분할하여 새로운 팬(Pane)을 생성합니다.
화면이 가로 방향으로 나뉘면서 기존 작업 공간 옆에 독립적인 새로운 터미널 셸이 배치됩니다.

tmux split-window -t work-session -h

tmux split-window -t work-session -v 명령어는 work-session 세션의 현재 활성 팬을 상하(수직)로 분할하여 새로운 팬을 추가합니다.
직전에 분할된 작업 영역이 위아래로 다시 쪼개지면서 총 3개의 독립된 작업 팬이 구성됩니다.

tmux split-window -t work-session -v

tmux list-windows -t work-session 명령어는 work-session 세션에 속한 윈도우 목록과 화면 레이아웃 정보를 확인합니다.
실행 결과를 통해 0번 윈도우(bash)가 총 3개의 팬(3 panes)을 포함하고 있으며, 복합 분할된 레이아웃 구조를 유지한 채 활성화(active) 상태임을 알 수 있습니다.

tmux list-windows -t work-session

tmux list-panes -t work-session 명령어는 work-session 세션 내부 윈도우를 구성하는 개별 팬들의 상세 상태를 확인합니다.
출력 결과를 통해 총 3개의 팬(0, 1, 2)의 크기 규격 및 고유 식별자(%0, %2, %3)를 확인할 수 있으며, 2번 팬이 현재 포커스를 가진 활성(active) 팬임을 보여줍니다.

tmux list-panes -t work-session

4. 원격 키 입력 전송과 세션 정상 종료

tmux send-keys -t work-session.0 'echo "tmux background execution test"' C-m 명령어는 work-session 세션의 0번 팬에 문자열과 엔터(C-m) 입력을 원격으로 전송합니다.
세션에 직접 연결하지 않은 상태에서도 백그라운드에서 동작 중인 특정 팬에 원하는 명령어를 전달하여 즉시 실행할 수 있습니다.

tmux send-keys -t work-session.0 ’echo “tmux background execution test”’ C-m

tmux capture-pane -pt work-session.0 명령어는 work-session 세션의 0번 팬 화면에 표시된 텍스트 내용을 캡처하여 현재 터미널로 출력합니다.
실행 결과를 통해 앞서 원격으로 전달한 echo 명령어와 그 실행 결과 텍스트가 0번 팬 화면에 정상적으로 출력되었음을 확인할 수 있습니다.

tmux capture-pane -pt work-session.0

tmux kill-session -t work-session 명령어는 지정한 work-session 세션과 그 안에 속한 모든 윈도우 및 팬을 종료합니다.
작업이 완료된 특정 세션을 명시적으로 삭제하여 불필요한 시스템 메모리와 리소스를 정리할 때 사용합니다.

tmux kill-session -t work-session

tmux kill-server 명령어는 현재 시스템에서 동작 중인 tmux 서버 데몬과 남아 있는 모든 세션을 완전히 종료합니다.
다른 세션을 포함하여 백그라운드에서 구동 중이던 모든 작업 환경을 일괄 정리하고 프로세스를 완전히 종료합니다.

tmux kill-server

tmux ls 2>&1 || echo '모든 tmux 세션이 정상 정리되었습니다.' 명령어는 세션 목록을 조회하여 시스템에 실행 중인 tmux 세션이 남아 있는지 최종 검증합니다.
실행 중인 서버 데몬이 없어 오류가 반환될 때 대체 문구가 출력되도록 하여, 모든 세션과 서버 프로세스가 정상적으로 정리되었음을 명확히 확인할 수 있습니다.

tmux ls 2>&1 || echo ‘모든 tmux 세션이 정상 정리되었습니다.’

지금까지 tmux의 동작 원리부터 세션 관리와 화면 분할 기능까지 간단하게 살펴보았습니다.
자주 쓰는 명령어와 단축키를 손에 익혀 한층 더 쾌적하고 생산적인 리눅스 터미널 환경을 구축해 보시길 바랍니다.