tmux를 이용해서 터미널을 꺼도 연결이 끊어지지 않고 딥러닝을 학습할 수 있는 방법을 정리했습니다.


1. Tmux 설명


Tmux 란?

tmux란 terminal multiplexer의 약자로 이름에서 알 수 있듯이 여러개의 터미널을 각각 독립적으로 사용할 수 있게 해주는 유틸리티입니다.

  1. 하나의 터미널에서 화면을 분할하게 사용할 수 있어 작업효율을 높여주고 ,
  2. 영구적인 Session을 제공할 수 있기 때문에 작업중 ssh서버와 연결이 끊겨도 작업중인 것들이 사라지지 않습니다.

Tmux의 구조

  • tmux를 실행하면 하나의 윈도우를 가지는 새로운 세션(session)만들고 이것을 화면에 출력합니다.
  • 화면 아래에 상태 표시줄에 현재 세션 정보가 표시되며 이는 interactive commands를 입력하는데 사용됩니다.
  • 세션은 tmux가 관리하는 가상의 터미널 집합입니다. 각각의 세션은 그것과 연결된 하나 또는 2개 이상의 윈도우를 갖고 있습니다.
  • 윈도우는 모니터 화면 전체를 차지하고 있고, 이 윈도우는 몇 개의 사각 판(pane)으로 나눌 수 있으며 각각의 사각 판은 분리된 가상의 터미널입니다.

개념적인 설명은 와닿지 않으니 실제 사용할 때를 빗대에서 이야기 해보겠습니다.

Tmux의 구성요소는 크게 3가지로 나뉩니다.

1. Session

tmux를 사용하면 [ tmux 서버 ] , [ tmux 클라이언트 ] 로 나뉩니다. 이 때 [ tmux 서버 ]에서 실행되는 프로세스를 session이라 할 수 있습니다. Session은 tmux가 관리하는 가상의 터미널로 1개 이상의 [ tmux 클라이언트 ]접속할 수 있습니다. 1개 이상이니 당연히 여러 [ tmux 클라이언트 ]가 접속가능하고 이를 보며 동시 작업도 가능합니다.

2. Window

개념에 나와있듯이 Session안에 무조건 1개 이상의 Window를 갖고 있습니다. Window는 index로 구분하는데 번호는 0번부터 시작합니다.

ex) Session을 크롬 / Window를 크롬의 탭 으로 보시면 이해가 되실 겁니다. 하나의 크롬창(Session)은 1개이상의 크롬 탭(Window)을 만들 수 있고 크롬창(Session)을 다른분들과 같이 공유할 수 있다고 생각하시면 됩니다.

3. Pane

Pane은 Window내에 1개 이상이 있습니다. 이 Pane이 실제 입력하는 단일의 가상터미널이라고 보시면 됩니다.

Session 안에 1개이상의 Window → Window 안에 1개이상의 Pane Pane은 실제 구동되는 가상터미널이기 때문에 이 pane들이 모여 window를 이루고 window가 모여 Session을 이룹니다. 따라서 개념에서의 Session은 가상터미널의 집합이라고 했던 부분이 여기서 나오는 것입니다.

종합하자면 이런 느낌입니다. (Session도 여러개 만들 수 있습니다.)

img

2. 사용법


1. Tmux 설치하기

설치 방법입니다.

# Debian 계열 (ubuntu, Mint..)
$ sudo apt install tmux

# Redhat 계열 (Redhat, CentOS, Fedora ...)
$ sudo yum install tmux

# MacOS
$ brew install tmux

정상적으로 설치된다면 tmux -V 로 버전확인을 해봅니다.

(V는 대문자입니다.)

image-20220424170332290

tmux 3.2a version으로 정상적으로 설치 되었습니다.

2. tmux 생성하기

tmux를 열어보겠습니다.

image-20220424170535422

아래쪽에 [0] 0:zsh*의 초록색 줄이 생겼습니다. 하단에 나타나는 것은 세션이름과 현재시간이며 이 상태의 창은 하나의 세션이 시작된 모습입니다.

3. Session 종료하기

$ Ctrl + d 

Ctrl+d 를 눌러서 현재 Session을 종료할 수 있습니다. 종료된 세션은 [exited]로 표시됩니다.

image-20220424170613452

4. Session 이름 지정하기

Session에 이름을 지정하는 것도 가능합니다. 하고 이름을 설정한 새로운 Session을 만들어보겠습니다.

$ tmux new -s [세션명]

image-20220424170735754

하단을 보면 session명이 부여된 session이 생성되었습니다.

5. 세션 분리 (세션 종료하지 않고 기존 shell로 이동)

tmux를 쓰는 이유는 학습 시킬 때 ssh서버와 연결이 끊겨도 작업 중인 것들을 보존 시키기 위함입니다.

위의 상황에서 기존 shell로 이동 시켜보겠습니다.

$ (Ctrl + b) + d

(ctrl + b) d를 누르면 세션을 종료하지 않고 detached 시킬 수 있습니다.

명령어가 잘 안먹힐 때도 있는데, 그때는 Ctrl+b 를 누른 뒤 1-2초를 기다리고 d 버튼을 누르시길 바랍니다.

image-20220424171054784

이번에는 [exited]가 아니라 [detached (from session first_session)]는 문구가 출력 되었습니다.

6. 세션 불러오기

$ tmux ls

tmux ls를 누르면 현재 detached 되어 있는 session을 확인할 수 있습니다.

image-20220424171252504

위에서 종료를 하지않고 session을 detached 했기 때문에 first_session이 남아있습니다.

방금 detached된 세션(first_session)을 다시 불러오려면 다음 명령어를 입력해야됩니다.

$ tmux attach -t [세션명]

7. 마우스 휠로 움직이기.

image-20220424171616550

tmux는 기본적으로 마우스 휠을 움직일 수 없습니다. 이때문에 매우 불편한 상황이 생길 수 있는데, 그때 다음과 같은 명령어를 사용해서 마우스 휠을 사용할 수 있습니다.

$ (Ctrl + b) + [

위와 같이 Ctrl+b를 동시에 누른 후 [ 버튼을 누르면 마우스 휠을 동작 시킬 수 있습니다.

그 외

session 바로 생성

image-20220424172030655

  • 우측 화살표 버튼을 누르면 바로 생성할 수 있습니다.

좌우 분할

image-20220424172132441

  • (Ctrl + b) + %를 누르면 좌우 분할이 가능합니다.

위아래 분할

image-20220424172437213

  • (Ctrl + b) + “를 누르면 위아래 분할이 가능합니다.

Reference

[1] https://velog.io/@ur-luella/tmux-사용법