본문 바로가기
튜토리얼

초보를 위한 tmux 사용법

by evmoon 2021. 7. 4.

1. Why tmux?🤔

tmux를 필자의 노트북에서 실행한 예시.

tmux는 terminal multiplexer의 줄임말로, 한 화면 내에서 여러 개의 터미널을 띄우고 각각 다른 프로그램을 돌리게 할 수 있습니다. 하지만 그것 이외에도 강력한 장점이 있는데, detach를 시켜서 로그아웃돼도 계속 프로그램을 돌릴 수 있다는 것입니다. 필자는 최근에 서버에서 머신러닝 모델을 돌리는 일을 자주 해야 하는데, tmux를 사용하고 detach를 시켜놓으면 시간이 흘러 ssh에서 로그아웃이 돼도 계속 모델을 돌릴 수 있습니다. 물론 nohup 등의 명령어를 사용해서도 로그인이 끊겨도 계속 돌릴 수 있지만, 개인적으로는 아웃풋 파일을 지정해줘야 하는 nohup보다는 tmux가 좀 더 편리하게 느껴지는 것 같습니다.

(+고수의 향기를 풍길 수 있습니다.)

2. Basics of basics

일단 tmux를 설치하는 것은 전혀 어렵지 않습니다. 맥북을 사용하면 brew install tmux 명령어로 간단하게 설치할 수 있고, 리눅스의 경우 이미 기본으로 깔린 경우도 많습니다. 자세한 설치방법은 여기를 참조하시면 됩니다.

설치 후 tmux를 실행하면 아래와 같이 tmux session이 생성됩니다.

tmux의 장점인 화면 분할, detach 등을 하기 위해선 tmux command를 사용할 줄 알아야합니다. tmux command를 실행시키기 위해 우선 Ctrl+B(Ctrl을 누른 상태로 B 키 누르기)를 눌러줘야 합니다. command prefix로 이해하시면 될 것 같습니다. Command prefix를 누른 후에는, 아래의 키들을 누르면 각각에 해당하는 명령을 실행할 수 있습니다.

 

2-1 세션 안에서 실행하는 명령어들 (Ctrl+B를 누른 후 실행)

fn + 위쪽 화살표 : 스크롤 모드로 진입합니다. 스크롤 모드 이외에서 스크롤을 하면 인풋으로 입력되기 때문에, 반드시 알아야 하는 명령입니다. 스크롤 모드에서 벗어나기 위해서는 q를 누르면 됩니다.

% : 화면을 좌우로 분할합니다.

" : 화면을 아래위로 분할합니다.

d : session을 detach 합니다. 위에서도 소개했듯이, detach를 시키면 로그인 파이프가 끊어져도 tmux session에서 실행시킨 명령어가 계속 돌아가게 됩니다.

x : 현재 커서가 있는 터미널 pane을 종료시킵니다.

화살표(좌/우/위/아래) : 현재 창이 여러 pane으로 분할되어있을 때 사이에서 이동하기 위해 사용합니다. 예를 들어서 왼쪽 pane에서 오른쪽 pane으로 이동하기 위해서 오른쪽 화살표를 누르는 식입니다.

 

2-2 세션 밖에서 실행하는 명령어들

다음의 명령어들은 tmux session 바깥에서 실행하는 명령어들입니다.

tmux : 새로운 tmux session을 생성합니다. session은 간단하게 '윈도우 하나'의 단위라고 생각하시면 편합니다.

tmux ls : 생성된 여러 tmux session들을 list로 보여줍니다.

tmux attach -t <숫자>: tmux ls로 생성되어 있는 session들을 확인한 후, 다시 attach할 session의 숫자를 넣어서 실행시킵니다.

tmux kill-session -t < 숫자> : 종료시키고 싶은 세션의 번호를 확인한 후 마지막에 숫자를 넣어서 세션을 종료시킵니다.

tmux kill-server : 모든 세션을 종료시킵니다.

예시로 session을 하나 생성한 후 detach를 시켰다고 가정합시다.

그 상황에서 tmux ls를 실행시키면

tmux ls 명령어의 실행 결과

이런 식으로 현재까지 만들어진 window 들이 나오게 됩니다. 다시 이 tmux 세션으로 들어가기 위해, 번호인 0을 넣어서 tmux attach -t 0 를 실행시키면 해당 세션으로 다시 들어갈 수 있습니다. 그 후 앞서 얘기한 대로 Ctrl+B 를 누른 후 D 키를 누르면

detach 실행후 터미널 출력 

이런 아웃풋이 출력되며 기존 터미널 화면으로 빠져나오며, detach가 잘 됐음을 확인할 수 있습니다.

3. 마무리하며

이상으로 tmux의 기본적인 사용법을 알아봤습니다. 당연히 tmux에는 필자가 위에 쓴 것 이외에도 (필자도 모르는) 수많은 명령어가 있지만, 초보라면 이 정도면 알아도 tmux 사용을 시작하는 데에 무리가 없을 거라 생각합니다.

아이러니하게도 필자는 과거 스타트업에서 인턴으로 재직 당시에 tmux의 존재를 알았음에도 잘 쓰지 않았습니다. 여러모로 불편했고 그 때는 그 편의성과 필요성을 잘 느끼지 못했던 것 같습니다. 하지만 요즘은 매일 서버에서 코딩하고 모델을 학습시키면서 tmux의 필요성을 절감했고, 유용하게 잘 쓰고 있습니다.

당장 배우기엔 귀찮고 어렵겠지만, 특히 저와 같이 서버에서 머신러닝 모델을 돌리는 일을 많이 하시는 분들은 tmux를 잘 활용하시면 훨씬 편하게 작업하실 수 있을 것 같습니다.

'튜토리얼' 카테고리의 다른 글

시작하는 개발자를 위한 생존 git tips  (0) 2021.04.25