본문 바로가기
Old Posts/Linux

[Linux] tmux 설치와 사용법 및 예제 정리

by A6K 2021. 8. 7.

원격 서버에 접속해서 작업을 하다보면 터미널 화면을 분할해서 사용해야하는 경우가 많다. 특히 하나의 터미널 창에 여러개의 터미널 화면을 분할해서 사용하는 'Terminal multiplexer'라는 종류의 소프트웨어를 사용하면 터미널 환경에서의 생산성은 물론이고, 고수의 느낌을 조금이나마 풍길 수 있다.

Terminal multiplexer 소프트웨어 중에 tmux라는 프로그램을 사용하고 있는데 설치 방법과 간략한 사용법을 정리해보았다.

tmux 설치

tmux는 각 운영체제의 패키지 관리자를 이용해서 설치할 수 있다. 우선 macOS에서는 brew를 이용해 설치할 수 있다.

$ brew install tmux

우분투 리눅스에서는 apt-get을 이용해서 설치할 수 있다.

$ sudo apt-get install tmux

실행은 tmux 명령을 입력하기만하면 된다.

$ tmux

tmux 주요 용어

tmux의 기능을 설명할 때 몇 가지 용어들을 미리 알고 있어야한다.

session(세션) : tmux 명령을 실행하면 세션이 생성된다. 세션은 tmux가 관리하는 가장 큰 실행단위다. tmux는 생성된 세션에 attach/detach 할 수 있다. tmux detach 한 세션은 종료되지 않고 백그라운드에서 실행을 계속할 수 있다. 실행된 tmux 하나가 세션이라고 생각하면 된다.

window(윈도우) : 세션은 여러개의 윈도우로 구성된다. 사용자가 터미널 화면으로 보는 뷰가 윈도우라고 생각하면된다. 하나의 세션은 마치 크롬의 탭들처럼 여러개의 윈도우로 구성될 수 있다. 세션에서 윈도우를 전환하면 새롭게 전환된 윈도우 화면이 검은색 터미널 화면에 뿌려지게 된다.

pane (팬) : 하나의 윈도우는 분할되어 몇 개의 Pane으로 구성할 수 있다. 가로 혹은 세로로 화면을 분할해가면서 팬을 생성한다. 윈도우를 전환하면 팬 구성도 새로운 윈도우의 구성으로 전환된다.

tmux 를 실행시켜보면

이런 화면이 나온다. tmux를 실행시켰으므로 하나의 세션이 생성되었다.

현재 실행 중인 세션의 하단을 보면 현재 생성되어 있는 윈도우들의 리스트가 탭처럼 나와있다. 현재 0번과 1번 윈도우가 생성되어 있고, * 표가되어있는 윈도우가 현재 화면에 뿌려지고 있는 윈도우다. 만약 윈도우를 0번으로 전환하면 1번 윈도우는 백그라운드로 전환된다.

하나의 윈도우는 여러개의 팬(Pane)으로 분할해서 사용할 수 있다. 각각의 팬은 별도의 터미널처럼 동작할 수 있다. 즉, 1번 팬에서 vi를 열어서 소스코드를 보는 동시에 2번 팬에서 컴파일을 하고, 3번 팬에서 로그를 열어볼 수 있다.


tmux 사용법 - 세션 관련 명령

우선 세션과 관련된 tmux 명령은 다음과 같다.

# 세션 생성 (이름은 숫자로 생성됨)
$ tmux

# 이름을 지정하여 세션 생성
$ tmux new -s <session_name>
$ tmux new-session -s <session_name>

# 세션 이름 수정
[Ctrl] + b, $

# 세션 detach
[Ctrl] + b, d

# 세션 리스트보기
$ tmux ls

# 세션 attach
$ tmux attach -t <session number 혹은 session name>

# 세션 종료, 세션의 마지막 윈도우, 마지막 팬에서 실행
$ exit

# 세션 종료, 세션 밖에서 실행
$ tmux kill-session -t session_name

tmux 사용법 - 윈도우 관련 명령

윈도우와 관련된 tmux 명령, 기능은 다음과 같다.

# 윈도우 생성
[Ctrl] + b, c

# 세션 생성과 함께 윈도우 생성
$ tmux new -s -n

# 윈도우 이름 변경
[Ctrl] + b, ,

# 윈도우 종료
[Ctrl] + b, &
[Ctrl] + d

# 다음 윈도우(Next Window)로 이동
[Ctrl] + b, n

# 이전 윈도우(Previous Window)로 이동
[Ctrl] + b, p

# 마지막 윈도우(Last Window)로 이동
[Ctrl] + b, l

# 특정 윈도우로 이동 (몇 번째 윈도우인지)
[Ctrl] + b, 0-9

# 특정 윈도우로 이동 (이름으로 이동)
[Ctrl] + b, f

# 윈도우 리스트 보기
[Ctrl] + b, w

tmux 사용법 - 팬 관련 명령

팬과 관련된 tmux 명령, 기능은 다음과 같다.

# 세로 화면 분할
[Ctrl] + b, %

# 가로 화면 분할
[Ctrl] + b, "

# 팬 이동 - 화면에 나오는 숫자로 이동
[Ctrl] + b, q

# 팬 이동 - 순서대로 이동
[Ctrl] + b, o

# 팬 이동 - 방향키로 이동
[Ctrl] + b, <방향키>

# 팬 삭제
[Ctrl] + d
[Ctrl] + b, x

# 팬 사이즈 조절 - 현재 포커스된 팬 전체화면(한번 더 실행하면 윈상복구)
[Ctrl] + b, z

# 팬 사이즈 조절 [Ctrl] + b 를 누른 후 :
[Ctrl] + b, :
resize-pane -L or -R or -U -D

# 팬 레이아웃 변경 (다양한 레이아웃으로 자동 전환)
[Ctrl] + b, spacebar

tmux 사용법 - 단축키 관련 명령

지금까지 알아봤던 단축키들은 기본 설정 값이다. tmux는 사용자가 자신에게 맞는 키 매핑을 커스터마이징해서 사용할 수 있게 명령을 제공한다.

# 단축키 목록
$ [Ctrl] + b, ?

# 키 바인딩 및 언바인딩
[Ctrl] + b, :
bind-key [-cnr] [-t key-table] key command [arguments]
unbind-key [-acn] [-t key-table] key

# 옵션 설정 - set-option
[Ctrl] + b, :
set -g

# 옵션 설정 - set-window-option
[Ctrl] + b, :
setw -g

# 열려있는 모든 팬에 동시 입력하기
[Ctrl] + b, :
setw synchronize-panes on

옵션과 관련해서 예제를 하나 들면,

[Ctrl] + b, :

set -g status-bg white

이렇게 실행하면

바닥에 있는 상태바의 색이 변경되었다.

[Ctrl] + b, :

setw -g window-status-current-bg red

이렇게 실행하면

현재 활성화된 윈도우의 이름이 빨간색으로 마킹되어 표현된다. tmux 에서 제공하는 다양한 옵션을 이 명령어로 바꿔가면서 자신만의 실행 환경을 커스터마이징 할 수 있다.


tmux 사용법 - 단축키 관련 명령

 

tmux에 뿌려진 화면을 위로 스크롤 하고 싶을 때가 있다.

# Copy 모드로 들어가기
[Ctrl] + b, [

# 빠져나오기
[ESC]
q

copy 모드로 진입하면 마우스 스크롤이나 pageUp, pageDown, 화살표 키를 사용해 화면을 자유롭게 오갈 수 있다. Copy 모드가 아닌 일반 모드에서 화살표를 이용하면 이전 명령어가 선택된다.

tmux를 잘 활용하면 터미널을 이용한 작업의 생산성이 몇 배는 높아진다. 리눅스에서 터미널을 자주 만지는 개발자라면 tmux 같은 터미널 멀티플렉서를 잘 쓸 수 있게 익숙해지도록 하자.

댓글