본문 바로가기

Linux

tmux 사용법 정리

tmux는 Windows에서 win+방향키 로 화면을 분할해서 사용했던 것과 마찬가지로 여러 개의 창을 열어놓고 여러 작업을 동시에 할 수 있도록 하는 SW입니다. (tmux는 shell이 아닙니다)

 

예시로, 파일을 실행해야 하는데 파일 하나 돌리는 시간이 오래 걸리는 경우 두 개의 창을 띄워놓고 창 하나에는 실행 시켜놓고 나머지 한 창에서는 자유롭게 다른 작업을 할 수 있습니다.

 

또한, tmux는 보통 server 접속이 끝나거나 terminal을 종료하게 되면 실행이 중단되지 않도록 detach/attach 기능을 갖고 있어서 오래 걸리는 코드를 돌릴 때에 백그라운드에서 계속 실행되도록 할 수 있다는 큰 장점도 있습니다.

 

tmux에서 우리가 알아야할 큰 개념 세 가지는 session, window, pane입니다. 

 

- session = tmux의 가장 큰 실행 단위 = Windows에서는 데스크톱 1, 2, 3, ...

- window = tmux 터미널 화면, 한 세션 내에서 tab하면서 움직일 수 있음 = Windows에서 Alt+Tab 할 수 있는 여러 실행 창들 중 하나

- pane = 하나의 window 내에서 창을 분할 할 수 있음 = Windows에서 win+방향키 로 여러 실행 앱들이 분할되는 것과 같음

 

session, window, pane

1. tmux 설치

MacOS를 사용하시는 분들은 brew를, Ubuntu를 사용하시는 분들은 sudo apt-get을 이용하시면 됩니다 :)

brew install tmux # for MacOS

sudo apt-get install tmux # for Ubuntu

이제 tmux를 사용할 준비가 끝났습니다!

2. tmux 명령어 정리

tmux 명령어는 처음 세팅은 ctrl+b를 누른 상태에서 동작합니다. 동시에 누르는 건 아니고 ctrl+b를 누른 다음, 원하는 명령에 해당하는 key를 눌러주시면 됩니다.

ctrl + b, <key>

  2.1 Session 관련 명령어

# 새로운 Session 만들기 - session 이름은 설정하지 않고 (0,1,2,.. 순서로 생성)
tmux

# 새로운 Session 만들기 - session 이름 = (session_name)
tmux new -s (session_name)

# Session name 수정
ctrl + b, $
# 원하는 이름 적고 Enter

# Session 종료 - session 사라짐
exit or ctrl + d # 주의! window나 pane이 열려있을 때는 pane -> window 순으로 하나씩 닫힘

# Session 닫기(detach) - 백그라운드에서 계속 돌아감(server 접속이 끊겨도 계속 돌아감)
# 매우 유용하게 사용할 수 있습니다 - tmux의 엄청 큰 장점
ctrl + b, d

# Session 목록 확인
tmux ls

# Detached session 다시 열기(attach)
tmux at -t (session_name)
# (session_name)은 tmux ls로 확인

  2.2 Window 관련 명령어

# 새 window 생성 - 하단 바에 현재 열려있는 window의 목록이 나와있고 현재 window는 색 처리 됨
ctrl + b, c

# window 이름 변경
ctrl +b, , # comma가 key

### window 간 이동 - 하단 바에 숫자로 window의 순서가 매겨져있음

# 하단 바 상에서 다음(next) window로 이동
ctrl + b, n

# 하단 바 상에서 전(previous) window로 이동
ctrl + b, p

# 특정 window로 이동 - 하단 바의 window 이름 옆 숫자(num)를 key로 입력
ctrl + b, (num)

# 모든 seesion들의 hierarchy를 tree 구조로 보여줌
ctrl + b, w # Esc 하면 이전 상태로 돌아옴

  2.3 Pane 관련 명령어

# 화면 세로 분할 - 좌우
ctrl + b, %

# 화면 가로 분할 - 상하
ctrl + b, " 

# pane 간 이동 - 화면에 나오는 번호(num)로 이동
ctrl + b, q, (num)

# pane 간 이동 - 방향키로 이동
ctrl + b, (방향키)

# 현재 pane을 zoom - 한 번 더 하면 다시 zoom out
ctrl + b, z

# pane size 조절 - size를 입력하지 않으면 L, R, U, D 방향을 한 cell 키워줌
ctrl + b, : # 명령어 모드 진입
resize-pane -L (size) # left
resize-pane -R (size) # right
resize-pane -U (size) # up
resize-pane -D (size) # down

# pane layout 변경 - pane 갯수에 맞게 여러 다양한 layout 보여줌 (여러 번 할 수록 변함)
ctrl + b, (spacebar)

  2.4 tmux configure 수정

현재 저는 편리한 사용을 위해 ctrl과 capLk key의 위치를 바꿔서 사용하고 있어서 tmux prefix인 ctrl+b도 ctrl+s로 바꿔서 사용하고 있습니다. 

 

shell customizing 했을 때 /.zshrc 를 수정했던 것처럼, tmux는 /.tmux.conf 파일을 생성하여 수정해주어야 합니다.

 

vim ~/.tmux.conf # /.tmux.conf 파일 생성

# Vim insert mode
i

... # 지금부터는 /.tmux.conf 파일에 입력

# Key binding - prefix ctrl + b -> ctrl + s
set-option -g prefix C-s
kunbind-key C-b
bind-key C-s send-prefix

# split window like Vim - ctrl + b, v(vertical), ctrl + b, s(horizontal)
bind s split-window -v
bind v split-window -h

# Mouse mode - 마우스 사용 가능
set -g mouse on

...

# /.tmux.conf 저장하기
Esc, :wq

3. 글을 마치며

오늘은 Linux 사용할 때 편한 tmux의 기능들과 여러 명령어들에 대해 살펴 보았습니다.

 

유용하게 사용하시길 바라며 더 유익한 글로 찾아뵙겠습니다 :)

 

틀린 부분이 있다면 댓글로 남겨주세요!

 

- Reference
간략하게 보는 tmux 설치와 명령어 사용법, 
soft.plusblog.co.kr/19

'Linux' 카테고리의 다른 글

Terminal Customizing & Linux Shell  (0) 2021.02.24
Windows 10 에서 Linux 환경 구축하기  (3) 2021.02.24