AI 모델을 돌리기 위해 리눅스 서버에서 GPU를 사용하게 되었다. 리눅스 서버 컴퓨터를 직접 사용하는 것이 아니라, 윈도우 컴퓨터에서 원격 접속하여 사용하게 된다.
그러기 위해서는 VSC에서 ssh 연결을 해야 하는데, 이건 다음 글에 정리해보겠다.
리눅스를 원격으로 사용하다보면 연결이 끊어질 때가 있다. 모델을 한번 돌리는데 시간이 만만찮게 걸리는 만큼 이런 상황이 발생해서 터미널이 죽는 것은 피해야 한다. 이렇게 터미널을 닫거나 연결을 끊을 때 명령이 종료되지 않게 해주는 프로그램을 Terminal Multiplexer 프로그램이라고 한다. 여기에는 여러가지 프로그램이 있는데 오늘은 tmux에 대해 알아보겠다.
tmux를 사용하면 터미널 창을 분할해서 한꺼번에 실행하기 편하고, 리눅스 서버에 원격 연결이 끊어져도 서버가 켜져있으면 tmux 터미널도 죽지 않는다. (tmux를 사용하지 않은 터미널에서는 원격 연결이 끊어지면 그대로 터미널도 종료되게 된다.)
tmux 설치
우선 tmux를 설치부터 해본다. (이 글에 나오는 모든 코드는 터미널 창에서 $ 다음에 한 줄씩 입력하면 된다.)
Ubuntu Linux 환경이라면 아래와 같다.
sudo apt-get install tmux
그리고 Mac OS는 brew를 사용한다.
brew install tmux
tmux 실행
tmux
tmux는 크게 Session, Window, Pane으로 구성되며, 각각에 대한 설명과 명령어는 아래와 같다.
Session 명령어
Session은 터미널 세션을 의미하며, 여러 개의 윈도우로 구성된다. 새로운 세션을 생성하고 exit하기 전까지는 그 세션 터미널 안에서 모델을 계속 돌릴 수 있다. 세션을 잠깐 나갔다가(detach) 다시 들어올 때는 attach 명령어를 사용하면 된다.
# 세션 생성
tmux
# 이름을 지정하면서 세션 생성
tmux new -s {session_name}
# 세션 이름 수정
ctrl + b 누르고 $
# 현재 실행중인 세션 목록확인
tmux ls
# 세션 불러오기
tmux attach -t {session_number or session_name}
# 세션 종료
exit
# 세션 중단하기(detach)
ctrl + b 누르고 d
# 터미널 화면 스크롤하기
ctrl + b 누르고 [
# 스크롤하기 중단
ctrl + c
[ESC]
q
# 특정 세션 강제 종료(세션 밖에서 종료해야함)
tmux kill-session -t session_number
# 세션을 윈도우와 함께 생성
tmux new -s {session_name} -n {window_name}
window 명령어
tmux 안에서 여러 개의 윈도우를 생성하여 자유롭게 터미널을 사용할 수 있다. 하나의 세션 안에서 탭처럼 사용 가능하다.
# 새 윈도우 생성
ctrl + b 누르고 c
# 새 윈도우 이동
ctrl + b 누르고 {숫자(윈도우번호)}
# 윈도우 종료
ctrl + b 누르고 &
crtl + d
화면 분할 명령어
pane은 하나의 윈도우 안에서 화면 분할을 하는 구성요소이다.
# 화면 분할(좌우)
ctrl + b 누르고 %
#화면 분할(상하)
ctrl + b 누르고 "
# 화면 분할 중에서 이동하기
ctrl + b 누르고 방향키
# 화면 분할 삭제
ctrl + d
그 외에 단축키를 알고 싶다면 아래 코드를 입력하면 된다. 그리고 위에 정리한 코드를 자세히 보면 알겠지만 대부분의 명령어는 crtl+b를 누르고 단축키를 누르면 된다.
# 단축키 목록 확인
ctrl + b 누르고 ?
앞에서 얘기한 상황에서 터미널의 세션을 유지하는 방식으로 nohup을 사용할 수도 있다고 한다. 이것도 다음에 정리해보겠다.