본문 바로가기
Linux

[Linux] tmux (Terminal MUltipleXer) 사용하기

by ds31x 2023. 11. 19.

tmux는 terminal multiplexer로 단일 terminal에서

  • 여러 session으로 작업을 하면서
  • 각 session별로 여러 window (session을 웹브라우저라고 생각하면, window는 tab에 해당)로 나누어 작업할 수 있고
  • 동시에 각 window를 여러 pane으로 나누어 (하나의 창을 가로 세로의 작은 창으로 나눔)

작업하게 해준다.

 

동시에 네트워크 연결이 불안한 환경에서는 현재의 접속된 shell의 session (tmux에서의 session이 아닌 현재 접속된 ssh등의 session)의 작업을 이어서 할 수 있도록 해주기 때문에 익혀두면 매우 유용한 툴이다.

연결이 불안한 환경에서 작업을 할 경우, 끊어져도 작업을 이어서 할 수 있는 방법은 다음 url을 참고할것.

2023.09.29 - [Linux] - [Linux] 터미널 종료와 상관없이 지속 실행되는 process 만들기 : nohup, tmux


tmux 간단 사용법

tmux는 여러 session으로 동작할 수 있으며,
각 session은 장비가 꺼지거나 각 tmux session을 종료시키기 전까지 유지되기 때문에

언제든지 해당 session에 접속(attach)하여 이전 작업을 이어서 할 수 있음.


create session

tmux
  • create a new nonamed session
  • 이 명령어를 실행하면 tmux가 새로운 session을 생성하고 실행.
  • 이후로는 tmux의 해당 session에서 작업이 이루어짐.
  • 일반 shell의 session처럼 exit로 종료시키고 나갈 수 있음.
tmux new -t <session_name>
  • create a new session of which name is <session_name>
  • 앞서와 달리 특정 이름으로 session을 시작시킨다는 차이점을 제외하고 똑같음.
  • -n <window_name> 을 추가로 줄 경우, 해당 session에서 해당 이름의 window가 생성되어 시작됨.
tmux ls
  • list current tmux sessions
  • 현재 동작 중인 tmux의 session들의 리스트를 보여줌.

tmux session에서 (ctrl+b) d 를 입력(=deattach)하면 tmux session을 종료하지 않고 tmux를 실행시킨 shell의 session으로 나간다.

  • (ctrl+b) dctrl 를 누른 상태에서 b를 누르고
  • 이 둘을 동시에 뗀 다음(( ... ), 소가로 parenthesis로 표현됨)
  • 곧바로 d 를 입력함을 의미함.

이렇게 나간 상태에서 tmux ls 를 수행하면 나갔던 tmux session을 확인할 수 있음.


tmux session 종료하기

exit
  • tmux session에서 위 명령어를 수행시 현재 tmux session을 종료하고 나감.
  • (ctrl +b) d 의 경우 tmux session을 종료하지 않고 나가기만 하는 것(엄밀하게는 해당 tmux session 의 접속을 끊는 것, d= dettach를 의미함)임.
  • exit로 종료하고 나가면 tmux ls 를 통해 출력되는 list에서 보이지 않음 (종료된 것이므로)

기존 tmux session에 다시 접속하기

tmux attach -t <session_name>
  • 이름이 주어지지 않은 경우에는 번호가 할당됨.
  • 이름 대신 번호를 기재하여 target session을 지정할 수 있음.

tmux command

tmux에서 (ctrl+b) 는 일종의 command prefix 임.

이후 특정 키들을 입력하여 해당 키에 할당된 tmux의 동작을 수행할 수 있음.

다음은 가장 많이 이용되는 것들임.

  • (ctrl + b) d : dettach. 현재의 tmux session와의 연결을 끊고 나옴.
  • (ctrl + b) [ : scroll mode. 이후 화살표, Page up/down 등을 통해 화면을 스크롤함 (ipad 의 경우 page up = option + 위화살표 )
  • (ctrl+b) w : list all windows. 현 session의 여러 windows를 보여준다.

Window 관련

tmux의 각 session은 여러 windows를 가질 수 있음.

일종의 tab으로 생각할 수 있음.

  • (ctrl + b) c : create a new window
  • (ctrl + b) <window_number> : 해당 번호에 해당하는 window로 이동.

앞서 살펴본 (ctrl+b) w 로 현재 session의 window들의 번호를 확인 가능함.


Pane

하나의 window는 여러 pane으로 나뉠 수 있음.

window가 전체 화면을 차지하는 것과 달리 각 pane은 화면에서 일정 위치를 차지하면서 동시에 확인 가능함.

new pane!

  • (ctrl+b) % : horizontal split. 현재 window를 수직으로 나눔.
  • (ctrl+b) " : vertical split. 현재 window를 수평으로 나눔.

pane 간 이동

  • (ctrl+b) <arrow_key> : 현재 pane을 기준으로 화살표에 따라 이동 (위 화살표를 통해 위의 pane으로 이동)
  • (ctrl+b) o : pane에 할당된 순서에 따라 다음 pane으로 이동함.
  • (ctrl+b) q : pane에 할당된 순서들을 보여줌.

remove pane!

  • ctrl+d : 현재의 pane을 닫음.
  • (ctrl + b) x : 현재의 pane을 닫을지 여부를 물어봄. y 입력시 닫힘.

windows는 최소한 하나 이상의 pane을 가지고 있어야 함.

만약 모든 pane이 닫힐 경우 자동으로 해당 window도 종료됨.

resize pane

pane 의 크기를 조절함.

  • (ctrl+b) (alt + <arrow_key>)
  • (ctrl+b) 를 입력하고 :resize-pane -U 10 을 입력하여 pane size를 조절할 수 있음. 뒤의 숫자(행 또는 열의 수)로 조절.
    • L : left
    • R : right
    • U : u
    • D : down
728x90