Post

[개발 환경] Tmux (Terminal Multiplexer)

[개발 환경] Tmux (Terminal Multiplexer)

Tmux란?

Tmux는 터미널 안에서 창을 분할하거나 병합할 수 있게 해주는 도구로, 터미널의 화면 관리자라고 생각하면 된다.

Tmux는 자기 안에서 새 shell을 하나 또 띄운다.
즉, 터미널의 shell이 Tmux를 실행하면, Tmux는 그 안에서 다시 자기만의 shell을 띄우는 것이다.
따라서 Tmux 안에서 명령을 입력하면, 그 명령은 Tmux가 새로 띄운 shell에서 실행된다.

Tmux의 유용한 기능 중 하나는 세션 유지로, tmux 내안에서 프로그램을 실행하면 터미널을 종료해도 해당 프로그램은 서버 안에서 계속 돌아간다.

Tmux 계층 구조

fig1[출처]

  • Session

    가장 큰 단위로, 하나의 프로젝트를 위한 독립적인 환경이다.
    터미널 창을 종료해도 서버에서 계속 살아있는 단위가 이 session이다.

  • Window

    하나의 session 안에 여러 개를 만들 수 있는 화면 단위이다.
    웹 브라우저의 탭과 비슷하다.

  • Pane

    하나의 window를 여러 개로 쪼개서 만든 분할창이다.
    한 화면에서 여러 작업을 동시에 보고 싶을 때 사용한다.

Tmux 설치

터미널에서 아래 명령어를 순차적으로 입력해 tmux를 설치할 수 있다. (리눅스 환경에서 실행)

1
2
sudo apt update
sudo apt install tmux

또는 sudo 권한이 없다면, conda 환경에서 아래 명령어를 사용하면 된다.

1
conda install -c conda-forge tmux

설치 후 터미널에 tmux를 입력했을 때, 터미널 하단에 아래와 같은 화면이 나오면 성공적으로 실행된 것이다.

fig2

Tmux 명령어

(Ctrl+b) + w 명령어를 사용하면, 현재 모든 세션과 윈도우의 목록이 미리보기와 함께 출력된다.

Session 관련 명령어

명령어설명
tmux새로운 세션 시작 (자동으로 번호 부여)
tmux new -s {세션 이름}설정한 이름으로 새로운 세션 시작
tmux ls현재 실행 중인 세션 목록 확인
tmux attachDetach된 세션 열기
tmux attach -t {세션 이름 또는 번호}특정 세션으로 다시 접속
tmux kill-session -t {세션 이름 또는 번호}특정 세션 강제 종료
(Ctrl+b) + d현재 세션 종료 (Detach)

Window 관련 명령어

명령어설명
(Ctrl+b) + c새 윈도우 생성
(Ctrl+b) + {숫자}해당 번호의 윈도우로 이동
(Ctrl+b) + x현재 윈도우 종료

Pane 관련 명령어

명령어설명
(Ctrl+b) + %좌우로 화면 분할
(Ctrl+b) + "상하로 화면 분할
(Ctrl+b) + q팬 번호 확인
(Ctrl+b) + 방향키팬 이동
Ctrl + d현재 선택된 팬 종료 (해당 팬에서 실행되고 있는 프로그램이 있으면 종료됨)

마우스 사용하기

초기 tmux 설정 상태에서는 아래의 이유 때문에 마우스 사용이 불편할 수 있다.

  • 마우스 클릭을 이용한 팬 선택이 불가능
  • 마우스 스크롤 시, 화면 내용 대신 이전 명령어 히스토리가 출력
  • 마우스 드래그 시, 분할된 팬을 무시하고 전체 화면 드래그

이때 아래 명령어를 입력해 마우스 모드를 활성화하면, 위의 불편한 점들을 해결할 수 있다.

1
tmux set -g mouse on

Copy & Paste

위 명령어를 사용하면 정상적으로 분할된 팬 내에서만 드래그가 될 것이다.

fig3

하지만 드래그를 하고 마우스를 떼면 드래그가 바로 해제될 건데, 이미 드래그하고 뗀 시점부터 복사가 된 것이기 때문에 따로 Ctrl + C를 누를 필요가 없다.
따라서 그냥 드래그 한 뒤, 붙여넣고 싶은 곳에 Ctrl + V를 누르면 된다.

This post is licensed under CC BY 4.0 by the author.