서버의 기술, 웹의 경험, 디자인의 창조력, 코드의 세계

+61 2 8091 3767

질문, 의견 또는 우려 사항이 있으십니까? 당사의 전담 전문가 팀은 귀하의 의견을 듣고 도움을 드릴 준비가 되어 있습니다. 소셜 미디어, 전화, 실시간 채팅을 통해 연락해 주세요.

Ubuntu 24.04에서 tmux 완전 정복하기 (업데이트 버전)


개발할 때 터미널 하나만으로 여러 작업을 동시에 관리하고, SSH 연결이 끊겨도 작업을 이어갈 수 있다면 얼마나 편할까요? tmux는 바로 그런 매직을 가능케 해 주는 터미널 다중화(Terminal Multiplexer) 도구예요. 아래 내용은 설치에서 시작해, 세션·창·패인 관리, Screen과의 비교, 복사·붙여넣기까지 모두 업데이트한 완전판입니다.


tmux란 무엇인가?

  • 터미널 세션 관리: 세션(Session) → 창(Window) → 분할창(Pane)을 계층적으로 관리
  • 세션 유지: SSH 연결이 끊겨도 백그라운드에서 세션이 살아 있으므로, 언제든 다시 붙여서 이어서 작업 가능
  • 자동화 & 커스터마이징: 스크립트로 레이아웃을 미리 구성하거나, ~/.tmux.conf에서 단축키·옵션을 내 맘대로 설정

설치하기

sudo apt update
sudo apt install tmux

설치 확인:

tmux -V
# 예: tmux 3.3a

세션(Session) 관리

기능명령어/키 조합
새 세션 시작tmux 또는 tmux new -s <세션명>
세션 분리(detach)Ctrl + bd
세션 재접속tmux attach (단축: tmux a)
tmux attach -t <세션명> (단축: tmux a -t <세션명>)
세션 목록 보기tmux ls 또는 tmux list-sessions
세션 종료tmux kill-session -t <세션명>
모든 세션 종료tmux kill-server

: 세션에 이름(-s)을 붙이면 여러 세션을 쉽게 구분하고, tmux a -t <이름>으로 바로 붙을 수 있어요.


창(Window) 관리

  • 새 창 생성: Ctrl + bc
  • 창 이름 변경: Ctrl + b,
  • 다음/이전 창 이동: Ctrl + bn / p
  • 인덱스로 바로 이동: Ctrl + b → 숫자(0~9)
  • 창 닫기: Ctrl + b&y

창마다 서비스나 프로젝트를 분리해 두면, 여러 터미널을 켜 놓은 것보다 훨씬 깔끔합니다.


분할창(Pane) 활용하기

한 창 안에서 화면을 분할해 여러 작업을 동시에 볼 수 있어요.

  • 수평 분할: Ctrl + b"
  • 수직 분할: Ctrl + b%
  • 패인 이동: Ctrl + b → 방향키(← ↑ → ↓)

분할창 닫기

  • 현재 패인만 닫기: Ctrl + b → x → y
  • 현재 패인만 남기고 전부 닫기: Ctrl + b → :kill-pane -a

복사·붙여넣기 (Copy & Paste)

tmux는 기본적으로 자체 버퍼를 쓰기 때문에, 복사 모드도 약간 설정이 필요합니다.

mode-keys 확인

tmux show-options -gw mode-keys
  • mode-keys emacs (기본)
  • mode-keys vi

Emacs 모드

  1. 복사 모드 진입: Ctrl + b[
  2. 선택 시작: Ctrl + Space
  3. 영역 확장: 방향키
  4. 복사 완료:
    • 기본: Alt + w (또는 Escw)
    • Enter 키로 복사하려면 ~/.tmux.conf에 아래 추가
      bind-key -T copy-mode Enter send -X copy-selection-and-cancel
  5. 붙여넣기: Ctrl + b]

Vi 모드 (선택 범위: Space)

set-option -g mode-keys vi
  1. Ctrl + b[
  2. Space (선택 시작)
  3. 방향키 또는 hjkl (확장)
  4. Enter 또는 y (복사 완료)
  5. Ctrl + b] (붙여넣기)

Nano 스타일 선택·복사 (추가 팁)

아래처럼 “Nano 스타일”로 키 매핑 예시만 바꿔서 ~/.tmux.conf에 추가

# Nano 스타일: Ctrl+^ 로 선택 시작, Alt+6 로 복사 완료
unbind-key -T copy-mode-vi v
bind-key   -T copy-mode-vi C-^ send -X begin-selection
unbind-key -T copy-mode-vi y
bind-key   -T copy-mode-vi M-6 send -X copy-selection-and-cancel

C-^ : Ctrl + Shift + 6 (nano의 마크 시작 Ctrl+^)

M-6 : Alt + 6 (nano의 복사 Alt+6)

이제 tmux 복사 모드에서도 nano처럼

  1. Ctrl + b[
  2. Ctrl + Shift + 6 (마크 시작)
  3. 방향키로 범위 확장
  4. Alt + 6 (복사 및 모드 종료), 붙여넣기 Ctrl + u

를 그대로 쓰실 수 있습니다.


추가 팁 & 자동화

왜 자동화인가요?

매번 수작업으로 세션 생성→창 나누기→명령 입력 과정을 반복하면 번거롭죠. 스크립트 한 줄로 터미널 레이아웃 전체를 만들고, 명령까지 미리 실행해 놓으면 작업 효율이 쑥 올라갑니다.


스크립트 작성 및 실행하기

스크립트 파일 생성
홈 디렉터리나 프로젝트 폴더 안에 tmux_start.sh 같은 이름으로 만듭니다.

cd ~/projects/myproj
cat > tmux_start.sh << 'EOF'
#!/usr/bin/env bash
SESSION="myproj"

# 1) 기존 세션이 있으면 종료
tmux kill-session -t $SESSION 2>/dev/null

# 2) 백그라운드에서 새 세션 생성 (첫 번째 창 이름: editor)
tmux new-session -d -s $SESSION -n editor

# 3) 첫 번째 창(0번)에서 nano로 README.md 편집
tmux send-keys -t $SESSION:0 'cd ~/projects/myproj && nano README.md' C-m

# 4) 같은 창을 수평 분할하여 두 번째 패인 생성
tmux split-window -h -t $SESSION:0

# 5) 두 번째 패인(0.1)에서 개발 서버 실행
tmux send-keys -t $SESSION:0.1 'cd ~/projects/myproj && npm run dev' C-m

# 6) 좌측 패인에 포커스
tmux select-pane -t $SESSION:0.0

# 7) 세션에 붙기
tmux attach -t $SESSION

EOF

실행 권한 부여

chmod +x tmux_start.sh

스크립트 실행

./tmux_start.sh
  • 스크립트가 세션을 초기화하고,
  • nano 에디터와 npm dev 서버를 나란히 띄운 뒤,
  • 자동으로 tmux 세션에 붙습니다.

한 줄로 실행하기 (Alias 활용)

자주 쓸 거라면 ~/.bashrc~/.zshrc에 아래 alias를 추가해 보세요.

# ~/.bashrc 또는 ~/.zshrc 에 추가
alias start-myproj="~/projects/myproj/tmux_start.sh"

터미널에서

start-myproj

만 입력하면 위 스크립트가 실행됩니다.


응용: 세션 여러 개 한꺼번에 띄우기

회사 프로젝트, 블로그, 문서 편집 등 여러 세션을 스크립트 하나로 관리하고 싶다면, 같은 형태로 반복 블록을 추가하세요.

#!/usr/bin/env bash

for proj in myproj blog infra; do
  tmux kill-session -t $proj 2>/dev/null
  tmux new-session -d -s $proj -n main
  tmux send-keys -t $proj:0 "cd ~/projects/$proj && clear" C-m
  tmux split-window -v -t $proj:0
  tmux send-keys -t $proj:0.1 "cd ~/projects/$proj && clear" C-m
done

# 모든 세션 목록 확인
tmux ls
  • for 루프 안에 원하는 프로젝트 이름만 추가하면,
  • 각 세션이 main 창과 두 개의 패인으로 자동 생성됩니다.

요약

  • 스크립트 한 번 작성 → chmod +xalias 등록
  • tmux new-session, split-window, send-keys, attach 순으로 구성
  • 반복문 활용해 복수 세션 생성도 간단

이제 매번 창을 쪼개고 명령어를 일일이 입력하는 대신, 단 한 번의 실행으로 단일 명령어만으로도 원하는 tmux 레이아웃과 워크플로우를 즉시 활성화해 보세요!

GNU Screen vs tmux 비교

항목GNU Screentmux
개발 상태레거시, 업데이트 빈도 낮음활발한 개발, 기능 지속 추가
복사·붙여넣기기본 터미널 클립보드와 자연 연동자체 버퍼 사용, 설정 필요
분할창 지원수평(Ctrl+a → S) / 수직( Ctrl+a → |)수평(Ctrl + b") / 수직 (Ctrl + b% )
스크립팅.screenrc에 제한적 설정세션·창·패인 스크립트로 자유롭게 구성
설정 파일~/.screenrc~/.tmux.conf
세션 관리 UI인덱스만 표시, 이름 표시 미흡창·패인 인덱스와 이름을 깔끔히 보여줌

Screen vs tmux 주요 명령어 비교

작업GNU Screentmux
새 세션 시작screen -S <name>tmux new -s <name>
세션 분리Ctrl + adCtrl + bd
세션 목록screen -lstmux ls
세션 재접속screen -r <PID|세션명>tmux a -t <섹션명> 또는 tmux attach -t <세션명>
세션 종료screen -X -S <name> quittmux kill-session -t <name>
창 생성Ctrl + acCtrl + bc
창 전환Ctrl + an / pCtrl + bn / p
패인 분할Ctrl + aS / Ctrl + a → |Ctrl + b" / Ctrl + b%
패인 전환Ctrl + aTabCtrl + b → 방향키
복사 모드 진입Ctrl + a[Ctrl + b[

자주 묻는 질문(FAQ)

Q1. tmux에서 스페이스를 눌러도 선택되지 않고 커서만 내려가요.

Emacs 모드일 때는 Ctrl+Space로 선택을 시작해야 합니다. Space만 누르면 일반 공백 입력처럼 동작합니다.

Q2. Emacs 모드에서 Enter 키로 복사가 안 돼요. M-w는 어떻게 누르나요?

M-w는 Meta-w, 즉 Alt + w 또는 Esc → w 로 입력합니다.
Enter 키로 복사 완료를 원하면 .tmux.conf
bind-key -T copy-mode Enter send -X copy-selection-and-cancel
를 추가하세요.

Q3. 왜 tmux는 시스템 클립보드와 자동 연동되지 않나요?

tmux는 자체 버퍼를 사용하는 구조라, OS 클립보드와 연결하려면 set-clipboard on 설정이나 xclip/xsel 같은 외부 도구를 파이프해 주어야 합니다.


마무리

지금까지 설치부터 세션·창·패인 관리, Screen 비교, 그리고 복사·붙여넣기 문제 해결까지 모두 업데이트했습니다. tmux를 제대로 익히면 터미널 활용도가 눈에 띄게 올라가니, 꼭 한 번 설정을 손봐 보시길 추천드려요. Happy tmuxing!

Share this article
Shareable URL
Prev Post

워드프레스 구텐베르그 블록 플러그인- 테크플레이

댓글을 남겨주세요.😊

이메일 주소는 공개되지 않습니다. * 표시는 필수 입력 항목입니다.

Read next

리눅스 명령어 OS 버전 및 배포판 정보 확인

여러 프로젝트를 진행하다 보면, OS정보 없이 콘솔접속 정보만 던져주는 경우가 많습니다. 환경에 따라 인프라 구축이나 개발 환경 설정이 달라 질수 있기 때문에 적어도 기본정보는 확인하여 전달 하는것이…
0
Share