터미널 멀티플렉서

딥러닝 실험을 진행할 때 그 실험이 너무 오래 걸려서 노트북을 한 장소에 계속 놔둬야 한다거나, 창을 여러 개 띄우고 작업을 하고 싶어질 때가 있다. 그런데 SSH로 원격 서버에 접속했을 때나 세션이 끊길 위험이 있는 환경에서는 세션 유지가 쉽지 않다. 그런데 터미널 멀티플렉서로 이런 문제를 해결할 수 있다고 해서 알아보게 되었다.

tmux(티먹스라고 부르는 듯 ㅎ) 는 터미널 멀티플렉서의 한 종류로, 여러 블로그1에서 친절하고도 자세하게 설명해주는 것을 볼 수 있었다. (다들 너무 대단하시다)

tmux, 터미널 멀티플렉서를 쓰면 좋은 이유

  • 세션 유지

    로컬 서버에 세션을 띄워서 터미널을 종료시켜도 그대로 남아 있어서 이어서 작업하기 좋다. 특히 오래 걸리는 딥러닝 실험을 돌릴 때 많이 유용하다.

  • 창 분할과 여러 세션 관리

    하나의 터미널 창에서 화면을 세로·가로로 나누거나, 탭처럼 여러 세션을 만들어 전환할 수 있다.

    예를 들어 왼쪽에는 코드 편집, 오른쪽 위에는 로그 모니터링, 오른쪽 아래에는 데이터 확인을 동시에 진행할 수 있다.

  • 작업 환경 재현

    세션 이름을 붙이고 필요한 프로그램을 띄워두면, 다음에 같은 환경을 그대로 불러와서 작업할 수 있다.

같은 모델에 대해 여러 파라미터 세팅을 여러 세션을 통해 학습할 수 있고, 또 오래 걸리는 실험은 컴퓨터를 꺼도 유지 가능하다니.. 딥러닝 실험을 돌릴 때 너무너무 중요한 것 같다 ㅎ


tmux의 구성

  1. Session(세션): tmux를 실행하는 기본 단위로, 여러 윈도우로 구성된다. 하나의 프로젝트(?)라고 생각하면 될 듯 하다.
  2. Window: 터미널 화면으로 세션 내에서 탭처럼 사용이 가능하다.
  3. Pane: 하나의 윈도우 내에서의 화면 분할 단위 / 각 pane에서 독립적으로 명령어를 실행 가능하다.

사용법(?)

아직 나는 너무너무 기초 단계이므로.. 우선 기본적인 명령어만 추가한다. 나중에 능숙해지면 여기에 더 추가할 것 같다.

  • 새로운 세션 생성
tmux new -s session_name
  • 세션 만들면서 윈도우랑 같이 생성
tmux new -s session_name -n window-name
  • 세션 종료
exit
  • 세션 목록 보기
tmux ls
  • 세션 다시 시작하기 (떠 있는 세션을 다시 불러오기)
tmux attach -t session_number (or session_name)
tmux a -t session_number (or session_name)
  • 세션에서 나오기
prefix(보통 ctrl+b) + d 

tmux configuration

tmux 관련 여러 설정들을 .tmux.conf 파일을 만들어서 그 안에 추가(작성)할 수 있다. prefix 단축키, 명령어, 마우스 사용 가능 등 유용한 옵션들을 많이 사용할 수 있고, 또 예쁘게(?) 꾸밀 수도 있다. 아래는 현재 내가 세팅한 화면인데, 이런 식으로 내 가상환경, 현재 시간, CPU 사용량이 나타나게 할 수도 있다.

적용 방법
  1. home directory에서 tmux 접속
  2. .tmux.conf 파일을 만들기, 추가하고 싶은 이런저런 옵션들을 추가한다. (예를 들어 마우스 사용하고 싶다면, set -g mouse on 등)
  3. 플러그인을 쓴다면, tpm(플러그인 매니저) 다운로드 및 플러그인들 추가
  4. 수정한 configuration 적용) (tmux source-file ~/.tmux.conf )

나의 세팅은 여기서 확인할 수 있다.


공부를 하면 할수록 모르는 것이 너무 많다는 걸 깨닫는다.

직접 많이 사용해보고 부딪혀보면서 배워나가야지

Footnotes

  1. 참고자료:
    [1] https://study-addiction.pages.dev/Dev/tmux/%ED%84%B0%EB%AF%B8%EB%84%90-%EB%A9%80%ED%8B%B0%ED%94%8C%EB%A0%89%EC%84%9C%EC%99%80-tmux

    [2] https://jh-bk.tistory.com/11

    [3] https://seulcode.tistory.com/144