Tmux Start (202605)

Tmux 시리즈:

  1. Tmux Start (202605)
  2. Tmux Cheatsheet (202605)
  3. Tmux Plugins (202605)

이 내용은 tmux 2.x, 3.x 에서 사용 가능하다.

2026-05-29: 내용 문맥 조정, 설치 부분 삭제.
- OLD Tmux Start(20170504)
2017-07-10: tmux-continum 추가

Tmux는 terminal multiplexer로 서버에 여러 프로그램을 세션에 저장하고, 다른 작업 혹은 연결을 끊었다 다시 접속해서 세션을 열어 작업을 이어갈 수 있다.

[그림. Tmux 실행 모습 (tmux.github.io)]

설치 관련 (OLD machines)

최신 리눅스는 대부분 내장으로 설치된 듯 하다: WSL, Ubuntu 24.04/26.04 …

  • Ubuntu 14.04, Raspbian Jessie, Armbian 등에서 tmux가 1.8, 1.9 버전이 제공
  • Ubuntu 15, 16 Xenivior 버전은 Tmux 2.1
  • Old 버전 Ubuntu 14.04, Raspbian 등에서 tmux가 1.8, 1.9 버전이 제공되는데 package manager 같은 기능을 사용할 수 없다. 소스로 빌드해서 사용할 수 있다.
  • Ubuntu 14.04 desktop, orangepi plus, raspberry pi jessie 초기 버전은 빌드 필요

시작

tmux 명령으로 시작할 수 있다.

tmux 를 시작하면 하나의 세션에 하나의 윈도우가 만들어 진다.

1
2
$ tmux                   # 세션을 시작하고 참가한다.
$ tmux new -s foo # 세션 foo를 시작하고 참가한다

세션에 참가하면 하나 혹은 그 이상의 윈도우에서 Pane을 배치해 사용할 수 있다.


[그림. Tmux window layout]


세션 연결

세션은 하나 혹은 그 이상 만들고 attach 명령으로 세션에 참가할 수 있다.

1
2
3
4
$ tmux new -s foo        # 세션 foo를 시작
$ tmux ls # 세션 목록을 출력한다.
0: 1 windows (created Fri May 12 10:26:00 2017) [80x24] (attached)
foo: 1 windows (created Fri May 12 10:34:18 2017) [80x24]

터미널에서 세션에 참가하려면 attach 명령과 대상 세션을 지정해 준다. 대상 세션은 tmux ls 명령에 표시되는 세션번호 혹은 세션이름을 지정한다.

1
2
3
$ tmux attach
$ tmux attach -t 0 # 세션 0번에 참여한다
$ tmux attach -t foo # 세션 foo에 참여한다.

세션을 완전히 종료 시키려면, tmux 세션에서 명령모드 C-: 에서 kill-session 명령을 실행한다.
혹은 다른 터미널에서 세션번호 혹은 세션 이름으로 종료한다.

1
$ tmux kill-session -t 3   # 세션번호 3을 종료한다.

Control와 Meta key

Tmux 세션 시작후 Prefix key 를 통해 세션, 윈도우와 tmux 내장 명령을 실행할 수 있다.

즉, Prefix key로 Session, Window, Pane 관련 명령을 키로 조합해 사용한다.

기본 Prefix key는 Control+b key고 옵션으로 사용하는 Meta key는 Alt 키 이다.

여기서 Prefix key는 C와 조합으로 표기하고, Meta key인 AltM으로 표기한다.

윈도우 명령 control, meta 키 조합과 병행해 윈도우에서 명령모드를 사용할 수 있다.

명령모드는 C-: 키로 시작하고, 명령모드에서 명령 자동 완성 이 지원된다.


[그림. Window command mode]


Pane 다루기

윈도우는 수직/수평으로 구획을 나눌수 있다. C-“ 키로 현재 Pane 아래에 수평으로 새 Pane을 나눈다. 그리고 **C-%**키로 수직으로 새 Pane을 나눌 수 있다.


[그림. Tmux Window Pane]

  • C-q : pane 번호를 표시하고 번호를 눌러서 이동
  • C-o : pane을 순서대로 이동
  • C-방향키 : 해당 방향으로 이동
  • C-M-방향키 : 해당 방향으로 크기 조절
  • C-M-1~5 : 몇 가지 미리 설정된 레이아웃을 고를 수 있고, prefix space로 이 레이아웃을 순서대로 - 돌아가며 선택 가능
  • C-z : 특정화면만 확대하기 다시 예전 Panes상태로 돌아오기

Pane을 지우려면 C-x 키로 종료 혹은 터미널에서 exit로 터미널을 종료한다


Window 다루기

윈도우는 명령모드에서 new-window 혹은 C-c 키로 새 윈도우를 추가할 수 있다.


[그림. new Window ]

윈도우 목록은 C-w로 목록을 표시, 방향키로 윈도우 선택해 이동할 수 있다.

또한 윈도우 번호에 따라 단축키 C-0,1,2…9를 사용해 윈도우 사이의 이동 가능.

  • C-n, C-p : 다음 윈도우, 이전 윈도우로 이동
  • C-l : 직전 사용하던 윈도우로 이동
  • C-w : 윈도우 리스트를 띄우고 선택
  • C-, : 윈도우 이름 바꾸기

세션 사용중에 세션을 빠져 나오려면 C-d 로 Tmux 를 detach 할 수 있다.

detach는 명령모드 C-:에서 detach 명령을 사용할 수 있다.


복사와 스크롤

Tmux 터미널 화면 버퍼는 한 화면만 표시가 가능하다.

이전 화면 내용을 보려면 스크롤 기능을 켜야 한다. C+[ 로 스크롤 켜면, 우측상단에 페이지 표시가 나타난다.

키보드 방향키나 Page Up/Down키로 스크롤이 가능하다.


설정 사용

Tmux 의 환경 파일은 tmux 설정을 위힌 default 파일이 존재하지 않는다. 그래서 사용자가 별도의 설정파일에 작성해서 사용하면 된다.

보통 사용자 홈디렉토리에 .tmux.conf 파일에 tmux에 대한 설정을 명시할 수 있다.

설정 탑재:

  1. tmux 세션 사용중, 설정 재탑재

현재 사용중인 세션에서 C+r 로 재탑재가 가능하다.

1
C-r : 설정 파일을 새로고침합니다 
  1. tmux source 사용

변경한 설정을 적용하려면 터미널에서 다음 명령을 사용한다.

1
tmux source ~/.tmux.conf

현재 설정 추출과 백업:

tmux 기본 설정을 백업 혹은 확인하려면 tmux show 명령으로 확인이 가능하다.

1
tmux show -g

현재 tmux에 설정된 값을 백업:

1
tmux show -g | sed 's/^/set-option -g /' > ~/.tmux/tmux.current.conf

Prefix key 조합 변경

Prefix 키를 Control + a 키 조합이 편하다. 설정파일에 키 조합을 지정한다.

1
2
3
4
5
#Control+a에 'prefix' 연결
set -g prefix C-a
#send-prefix를 Control+a에 전달
bind C-a send-prefix
unbind C-b

설정을 다시 탑재하면 prefix는 C-a 로 재배치된다.

관리자들은 Capslock키를 Control 키도 선호한다.


참고

  1. OLD Tmux 시작
  2. OLD Tmux cheatsheet

Tmux Plugins (202605)

Tmux 시리즈:

  1. Tmux Start (202605)
  2. Tmux Cheatsheet (202605)
  3. Tmux Plugins (202605)

Plugin manager

Tmux Pluin Manager 를 설치하고, tmux 기능을 확장할 수 있다.

tpm 설치

먼저 사용자 홈 디렉토리에 저장한다.

1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

다음 설정을 tmux.conf 에 저장한다.

1
2
3
4
5
6
7
8
9
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# other plugins ...

# Initialize TMUX plugin manager
# (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

그리고 tmux 환경설정을 다시 탑재한다.

1
tmux source ~/.tmux.conf

plugin 설치와 키 바인딩

새 플러그인을 .tmux.confset -g @plugin 로 입력한다.

  1. 플러그인 설치를 위해서 C-I (대문자) 를 실행
  2. 플러그인 업그레이드를 위해서 C-U (대문자) 를 실행
  3. 플러그인 삭제:
    • .tmux.conf 에서 플러그인 삭제
    • C-M-u (소문자)

tpm 으로 해당 플러그인은 ~/.tmux/plugins/ 디렉토리에 패치된다.


주요 plugins

https://github.com/tmux-plugins/list

몇가지 플러그인을 설치해서 사용해 보자

tmux-sidebar

tmux 화면에 sidebar 로 tree 형식의 디렉토리 구조를 보여준다.

  1. .tmux.conf 에 플러그인을 추가한다.
1
set -g @plugin 'tmux-plugins/tmux-sidebar'
  1. tmux sourceC-r 로 설정을 재 탑재한다.

  2. C-I 로 플러그인 설치를 시작한다.

1
2
3
4
5
6
7
8
9
Already installed "tpm"
Installing "tmux-sensible"
"tmux-sensible" download success
Installing "tmux-sidebar"
"tmux-sidebar" download success

TMUX environment reloaded.

Done, press ESCAPE to continue.
  1. side-bar 키 바인딩
  • prefix + Tab - toggle sidebar with a directory tree
  • prefix + Backspace - toggle sidebar and move cursor to it (focus it)

plugin 삭제

  1. .tmux.conf 에서 해당 플러그인을 삭제한다.
  2. C-M-u 로 플러그인을 삭제한다.

여기서는 tmux-cpu 를 삭제하고 있다.

1
2
3
4
5
6
Removing "tmux-cpu"
"tmux-cpu" clean success

TMUX environment reloaded.

Done, press ESCAPE to continue.

Tmux-Resurrection

_tmux-resurrect_는 tmux 세션을 백업/복구 할 수 있는 플러그인이다. tmux.conf에 다음을 추가

1
set -g @plugin 'tmux-plugins/tmux-resurrect'

플러그인 설치를 위해서 C-I 를 실행하면 설치를 시작한다.

Resurrection 플러그인으로 백업/복구하는 키는 다음 같이 지정되어 있다:

  • C-s : save
  • C-r : restore

Tmux-continuum

tmux-continuum은 tmux-resurrect 플러그인과 연동하여 tmux 세션 상태를 주기적으로 자동 저장하고, 시스템 부팅 시 복원해주는 플러그인입니다.

tmux-continuum 의 주요 기능은:

  • tmux 환경을 15분 마다 자동 저장
  • 컴퓨터/서버 시작시 tmux 자동 시작 가능
  • tmux 시작시 자동 복구 가능
  • tmux 1.9 이상, bash, tmux-resurrect plugin

설치

  1. 설치는 .tmux.conf 파일에 mux-resurrecttmux-continuum 플러그인을 추가:
1
2
3
4
5
6
7
8
9
10
11
12
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# (continuum) tmux 시작 시 마지막 세션 자동 복원
set -g @continuum-restore 'on'

# (continuum) 자동 저장 간격 변경 (기본값: 15분)
set -g @continuum-save-interval '15'

# (continuum) continuum 상태표시
set -g status-right 'Continuum status: #{continuum_status}'
  1. tmux sourceC-r 로 설정을 재 탑재한다.

  2. C-I 로 플러그인 설치를 시작한다.

1
2
3
4
5
6
7
8
9
10
11
Already installed "tpm"
Already installed "tmux-sensible"
Already installed "tmux-sidebar"
Installing "tmux-resurrect"
"tmux-resurrect" download success
Installing "tmux-continuum"
"tmux-continuum" download success

TMUX environment reloaded.

Done, press ESCAPE to continue

이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.

  1. 키 바인딩
  • 세션 수동 저장: Ctrl + b 누른 후 Ctrl + s (Resurrect 기능)
  • 세션 수동 복원: Ctrl + b 누른 후 Ctrl + r (Resurrect 기능)

tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.


CLI 로 플러그인 관리

https://github.com/tmux-plugins/tpm/blob/master/docs/managing_plugins_via_cmd_line.md