tmux를 이용해서 터미널을 꺼도 연결이 끊어지지 않고 딥러닝을 학습할 수 있는 방법을 정리했습니다.
1. Tmux 설명
Tmux 란?
tmux란 terminal multiplexer의 약자로 이름에서 알 수 있듯이 여러개의 터미널을 각각 독립적으로 사용할 수 있게 해주는 유틸리티입니다.
- 하나의 터미널에서 화면을 분할하게 사용할 수 있어 작업효율을 높여주고 ,
- 영구적인 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도 여러개 만들 수 있습니다.)
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는 대문자입니다.)
tmux 3.2a version으로 정상적으로 설치 되었습니다.
2. tmux 생성하기
tmux를 열어보겠습니다.
아래쪽에 [0] 0:zsh*의 초록색 줄이 생겼습니다. 하단에 나타나는 것은 세션이름과 현재시간이며 이 상태의 창은 하나의 세션이 시작된 모습입니다.
3. Session 종료하기
$ Ctrl + d
Ctrl+d
를 눌러서 현재 Session을 종료할 수 있습니다. 종료된 세션은 [exited]로 표시됩니다.
4. Session 이름 지정하기
Session에 이름을 지정하는 것도 가능합니다. 하고 이름을 설정한 새로운 Session을 만들어보겠습니다.
$ tmux new -s [세션명]
하단을 보면 session명이 부여된 session이 생성되었습니다.
5. 세션 분리 (세션 종료하지 않고 기존 shell로 이동)
tmux를 쓰는 이유는 학습 시킬 때 ssh서버와 연결이 끊겨도 작업 중인 것들을 보존 시키기 위함입니다.
위의 상황에서 기존 shell로 이동 시켜보겠습니다.
$ (Ctrl + b) + d
(ctrl + b) d를 누르면 세션을 종료하지 않고 detached 시킬 수 있습니다.
명령어가 잘 안먹힐 때도 있는데, 그때는 Ctrl+b
를 누른 뒤 1-2초를 기다리고 d
버튼을 누르시길 바랍니다.
이번에는 [exited]가 아니라 [detached (from session first_session)]는 문구가 출력 되었습니다.
6. 세션 불러오기
$ tmux ls
tmux ls를 누르면 현재 detached 되어 있는 session을 확인할 수 있습니다.
위에서 종료를 하지않고 session을 detached 했기 때문에 first_session이 남아있습니다.
방금 detached된 세션(first_session)을 다시 불러오려면 다음 명령어를 입력해야됩니다.
$ tmux attach -t [세션명]
7. 마우스 휠로 움직이기.
tmux는 기본적으로 마우스 휠을 움직일 수 없습니다. 이때문에 매우 불편한 상황이 생길 수 있는데, 그때 다음과 같은 명령어를 사용해서 마우스 휠을 사용할 수 있습니다.
$ (Ctrl + b) + [
위와 같이 Ctrl+b
를 동시에 누른 후 [
버튼을 누르면 마우스 휠을 동작 시킬 수 있습니다.
그 외
session 바로 생성
- 우측 화살표 버튼을 누르면 바로 생성할 수 있습니다.
좌우 분할
- (Ctrl + b) + %를 누르면 좌우 분할이 가능합니다.
위아래 분할
- (Ctrl + b) + “를 누르면 위아래 분할이 가능합니다.