Tmux 사용 방법 안내

1. tmux란 무엇인가?

tmux(terminal multiplexer)는 터미널 세션을 다중화해주는 툴입니다.

  • 하나의 SSH 세션에서 여러 개의 터미널 창(윈도우)과 여러 개의 패널(창 분할)을 동시에 사용할 수 있습니다.
  • SSH 세션이 끊겨도 tmux 세션은 계속 살아 있어서, 재접속 후 동일한 세션을 다시 사용할 수 있습니다(즉, 터미널을 언제나 켜 놓고 있다고 생각하면 좋습니다).

회사 서버를 사용하면서 백그라운드에서 R 스크립트를 실행시키거나, 로그를 모니터링하거나, 동시에 여러 작업을 처리해야 할 때 편리합니다.

기존에도 nohup을 안내하고 있었지만, nohup은 실행 상황을 모니터링하기 어렵고, 추가 작업을 진행하기 곤란(새롭게 실행해야 함)한 반면, tmux를 사용하면 다수의 터미널을 이용하여 여러 작업을 분리하여 실행할 수 있습니다.

2. 설치하기

  • 차라투 인턴십 서버에는 기본적으로 설치되어 있으나, 개별 서버 이용자들을 위해 안내합니다.
  • 우분투/데비안 계열:
sudo apt-get update
sudo apt-get install tmux
  • 버전 확인
tmux -V

글 작성일(2024년 12월 28일) 기준 최신버전은 tmux 3.2a 입니다.

3. 기본 사용법

3.1. 세션 생성

SSH로 서버에 접속한 뒤, 다음 명령을 사용해 새 tmux 세션을 생성합니다.

tmux new -s mysession
  • -s mysession 옵션을 통해 세션에 이름을 부여합니다.
  • 세션 이름을 생략하면 자동으로 이름이 부여됩니다.

세션에 진입하면 평소 사용하는 터미널과 큰 차이가 없는 것처럼 보입니다. 여기서 시간이 오래 걸리는 작업을 실행(예: Rscript long_time_job.R) 해 보세요. 다음 문단의 명령어를 통해 이를 백그라운드에서 실행할 수 있습니다.

3.2. 세션에서 빠져나오기(Detach)

tmux 세션은 “분리(detach)” 하고 다시 붙을(attach) 수 있습니다.

  • Detach 단축키: Ctrl + b 누른 뒤, d → 즉, Ctrlb는 함께 누른 후, 키보드에서 한번 손을 뗀 다음 d를 입력해야 합니다.
  • 즉, tmux 내부에서 Ctrl + b, d를 순서대로 누르면 세션이 detach(분리)됩니다.
  • 분리된 상태에서 서버에서 로그아웃해도 tmux 세션은 계속 살아 있으며, 그 안에서 진행 중인 모든 작업이 백그라운드에서 계속됩니다.

3.3. 세션 재접속(Attach)

재접속 후, 다음 명령어로 기존 세션에 다시 접속할 수 있습니다.

tmux attach -t mysession

만약 이름 없는 세션이 하나 존재한다면,

tmux attach

로도 재접속할 수 있습니다. 만약 R 파일에 로그 기능을 추가했다면, 진행 상황을 확인할 수 있을 것입니다.

3.4. 세션 목록 확인

다음 명령어로 서버에 있는 tmux 세션을 확인할 수 있습니다.

tmux ls
  • 각 세션의 이름, 번호, 실행 시간 등을 볼 수 있습니다.
  • 여러 세션이 있을 때는 -t 옵션 뒤에 세션 이름을 정확히 입력해 attach 해야 합니다.

4. 윈도우/패널 관리

tmux 내부에 진입한 뒤에는 여러 “윈도우(창)”와 “패널(분할된 창)”을 만들어서 동시에 다양한 작업을 진행할 수 있습니다.

4.1. 윈도우(Window)

  • 새 윈도우 만들기: Ctrl + b, c
    • 작업 중인 세션 안에서 또 다른 창을 만들어서, 다른 작업을 진행할 수 있습니다.
  • 윈도우 간 이동: Ctrl + b, n (다음 윈도우), Ctrl + b, p (이전 윈도우)
    • 혹은 Ctrl + b, 숫자(예: Ctrl + b, 2)로 바로 해당 번호의 윈도우로 이동할 수 있습니다.
  • 윈도우 이름 변경: Ctrl + b, , (쉼표)
    • 쉼표를 누르면 윈도우 이름을 바꿀 수 있는 프롬프트가 나타납니다(화면 하단 초록 상태바가 노랗게 변합니다).

4.2. 패널(Pane)

  • 패널 수직 분할: Ctrl + b, %
    • 현재 윈도우를 수직으로 나누어 두 개의 패널을 만듭니다.
  • 패널 수평 분할: Ctrl + b, " (큰따옴표)
    • 현재 윈도우를 수평으로 나누어 두 개의 패널을 만듭니다.
  • 패널 간 이동: Ctrl + b, 방향키
    • 방향키(↑, ↓, ←, →)를 통해 다른 패널로 이동할 수 있습니다.
  • 패널 닫기: 패널 안에서 exit를 입력하거나 Ctrl + d로 해당 쉘을 종료하면 패널이 닫힙니다.

패널을 여러 개 열어두고, 한쪽에는 R 스크립트를 실행(예: Rscript my_long_running_script.R)하고, 다른 한쪽에서는 로그 파일을 tail로 모니터링 하는 식으로 사용할 수 있습니다.

5. tmux 설정 파일(.tmux.conf) 활용하기

tmux의 기본 단축키나 상태 표시줄 등을 커스터마이징 하려면 홈 디렉토리에 .tmux.conf 파일을 만들어 설정할 수 있습니다.

예를 들어, 저의 경우 /home/limcw/.tmux.conf 파일을 통해 설정을 커스텀할 수 있습니다.

파일을 수정한 뒤에는 tmux 내부에서 다음 명령으로 설정을 재로드하면 됩니다.

tmux source-file ~/.tmux.conf

상세한 설정 방법은 GPT나 인터넷 검색을 활용하여 찾아보시면 좋습니다.

6. FAQ

  1. tmux 세션이 너무 많아졌을 때 어떻게 하나요?
    1. tmux ls로 확인 후, 사용하지 않는 세션에 접속(tmux attach -t <session_name>)해서 exit 명령어로 종료하면 세션이 삭제됩니다.
    2. 또는 tmux kill-session -t <session_name> 명령으로 세션을 직접 종료할 수도 있습니다.
  2. tmux 세션이 종료된 다음에도 프로세스가 계속 남아있나요?
    1. 일반적으로 tmux 세션이 exit로 완전히 종료되면(세션이 죽으면) 그 안의 작업도 함께 종료됩니다.
  3. 서버 재부팅 후에는 tmux 세션이 어떻게 되나요?
    1. 메모리에 존재하는 세션이기 때문에 서버가 재부팅되면 모든 tmux 세션이 사라집니다. 인턴십 서버는 여럿이 사용하는 서버이고, 필요에 따라 서비스가 재시작 될 수 있기 때문에 이에 유의하여야 합니다.
    2. 재부팅 후에는 다시 tmux 세션을 생성해야 합니다.
1개의 좋아요