View

[linux] tmux 사용법

holywatermelon 2022. 2. 14. 23:35

tmux란? Terminal Muliiplexer

Tmux는 Linux의 프로그램으로 sessionwindow 개념을 통해서 여러 터미널을 동시에 실행하고 관리하는 기능을 가지고 있습니다. 이 기능은 구글 크롬과 같은 웹 브라우저에 비유할 수 있는데, 우리는 웹 브라우저를 사용하면서 한 번에 여러 창을 띄우기도 하고 한 창에 여러 탭을 가지고 있기도 합니다. 이때 각 창은 session에 비유할 수 있고, 각 창 마다 가지고 있는 탭은 window에 비유할 수 있습니다.

즉, session은 window의 묶음이고, 각 session을 통해서 터미널들의 묶음을 분리하고 있다고 할 수 있습니다.

tmux의 장점

  1. Background에서 program을 작동시키는 것을 관리할 수 있고, SSH를 사용하고 있다면 서버와의 연결이 끊어져도 안정적으로 프로그램을 돌릴 수 있다.
  2. 여러 프로그램을 돌리는 상황에 각 프로그램들이 돌아가는 터미널을 체계적으로 관리할 수 있다.
  3. 창 분할 기능(Pane)을 통해서, 마치 윈도우 OS에서 창들을 분할시켜 사용하듯이 여러 창을 띄워서 사용 할 수 있다.

tmux를 통해 해결한 문제

요약: SSH 서버에서 프로그램을 돌리다가 연결이 끊기면 outpu log도 확인 못하고 프로그램도 종료되곤 했는데, Tmux를 이용하면 이를 해결할 수 있다.

저의 경우에는 계산 프로그램을 안정적으로 돌리기 위해서 사용하였습니다. 저는 계산이 오래걸리는 프로그램을 작동시킬때 랩의 컴퓨터에서 주로 돌립니다. 이 과정에서 개인 노트북에서 SSH를 이용하여서 랩의 컴퓨터에 접근해서 사용하는데, 가끔 노트북이 절전모드에 들어가면 SSH 서버 연결이 끊기면서 계산 프로그램이 꺼져버리곤 합니다. SSH 서버에 접속해서 프로그램을 돌릴 때 안정적으로 돌리고 결과를 확인하기 위해서 이 프로그램을 사용하고 있는데, 아직까지는 굉장히 만족스럽습니다.

특히, 노트북의 wsl을 통해 SSH 서버로 접속해서 프로그램을 돌리면, 프로그램의 output log는 노트북의 wsl 터미널에서 밖에 확인할 수 없었고 이 마저 SSH가 끊기면 output log는 확인할 수 없었습니다. 하지만 Tmux를 통해서 프로그램을 돌리면 랩의 컴퓨터에서도 log를 확인할 수 있고, SSH를 언제 연결하든 다시 Tmux session을 attach하면 사용할 수 있는 것이 장점이었습니다.

tmux 시용법

tmux 설치

Linux/Ubuntu 및 WSL 환경을 기준으로 주로 설명합니다. 제가 Ubuntu와 WSL을 사용하고 있기 때문입니다.

$ sudo apt-get install tmux # for Ubuntu (and WSL)

개인 WSL에서 tmux를 설치한 결과입니다. line2에서 계정의 비밀번호를 입력하였습니다

설치 과정에 문제가 있다면, 아마도 sudo 권한 문제 혹은 인터넷 문제 일것으로 예상됩니다.

tmux 실행

Linux 터미널에서 tmux를 실행하려면 간단히 'tmux' 명령어를 쳐주면 됩니다.

$ tmux

그러면 창이 조금 바뀌어서 나타납니다.

좌측 하단을 보면 '[3]'이라고 적힌 것을 볼 수 있는데 이는 session의 이름을 나타냅니다.
또한 '[0:bash_]'를 확인 할 수 있는데 여기서 '0'은 창의 번호, 'bash'는 창의 이름, '\_'는 현재 창의 위치를 나타내는 커서입니다.
즉, 위 화면은 3이라는 이름의 session에서 'bash'라는 window가 하나 있는데, 현재 보여지는 창이 'bash'라는 것을 의미합니다.

이렇게 tmux를 실행시키고 나서 terminal에서 평소의 작업을 하면 되겠습니다.

tmux 명령어

tmux에는 크게 3가지 기능을 이해하면 효율적으로 사용할 수 있습니다.
여기서 'Ctrl + b' 단축키와 다른 키가 같이 쓰이는 경우, 'Ctrl + b'를 누르고 손을 땐 다음에 다른 키를 누르면 됩니다.
'Ctrl + b' 단축키를 누르면 명령어 입력 모드에 들어가게 되니 가장 자주쓰는 단축 키입니다. tmux가 실행되고 있을 때만 단축키를 사용할 수 있습니다.

  1. tmux session 관리
# <session_name>을 이름으로 가지는 tmux session 생성
$ tmux new -s <session_name>

# 세션을 백그라운드에서 돌아가게 하기
# (Note: Kill은 session을 종료하고, 이 단축키는 detach하여서 background에서 돌아가게 하니 유용함)
(Cntl + b) + d

# tmux에서 현재 작동중인 세션 list 확인하기
$ tmux ls

# 의 세션으로 다시 들어가기
$ tmux attach -t  
$ tmux at -t

# 바로 이전 세션으로 다시 들어가기
$ tmux attach  
$ tmux at

# <session_name>의 세션 종료하기
$ tmux kill-session -t
  1. window 관리

# 신규 창 생성
(Cntl + b) + c

# 창 선택하여 이동
(Cntl + b) + w

# 이전 창 이동
(Cntl + b) + p

# 번호별 창 이동
(Cntl + b) + [0~9] # 해당 창 숫자

# 현재 창 종료
(Cntl + b) + &
  1. pane 관리
# 화면 가로 분할
(Cntl + b) + %

# 화면 새로 분할
(Cntl + b) + "

# 화면 focus 이동
(Cntl + b) + 방향키

# 화면 위치 바꾸기
(Cntl + b) + { # 이전자리의 위치로  
(Cntl + b) + } # 다음 자리의 위치로

# 해당 작업중인 화면 닫기
(Cntl + b) + x

# 화면 스크롤
(Cntl + b) + PgUp/PgDn # 완료 후 'q'를 입력하여 스크롤 모드 끝내야 함

Reference (Thanks!)

(https://seongkyun.github.io/others/2019/01/05/tmux/)

Share Link
reply
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31