출처

openbsd Link



tmux란? Terminal Muliiplexer

  • tmux 세션을 시작한 후 다음 세션에서 여러 개의 창을 열 수 있음

  • 하나의 터미널에서 여러 프로그램을 쉽게 전환하고 분리하여 다른 터미널에 다시 연결할 수 있음

  • tmux 세션은 영구적이여서, tmux에서 실행되는 프로그램은 연결이 끊어져도 계속 실행됨

  • tmux의 모든 명령은 기본적으로 +b로 시작



tmux 설치하기

// ubuntu & devian
$ sudo apt install tmux

// Centos & Fedora
$ sudo yum install tmux

// Mac OS
$ brew install tmux



tmux 세션 시작하기

$ tmux



이름 지정하여 tmux 세션 만들기

$ tmux new -s session_name

// sunny190729 session 만들기
$ tmux new -s sunny190729



tmux 세션 종료하지 않고 쉘로 돌아가기(분리)

// 분리시 기존 쉘로 돌아가고, Tmux 세션에서 실행중인 프로그램은 세션에서 분리된 후에도 계속 실행됨
<Ctrl> + b + d

// 분리시 다음과 같이 detached라고 남음
[detached]

// 종료(exit)시에는 exited
[exited]



tmux 세션에 다시 접속하기

// 실행중인 tmux 세션 유형 목록 확인
$ tmux ls

// 세션의 이름은 출력의 첫 번째 열임 (아래의 0, sunny190730)
0: 1 windows (created Mon Jul 29 07:43:45 2019) [229x28]
sunny190730: 1 windows (created Mon Jul 29 07:45:02 2019) [229x28]

// 세션에 연결
$ tmux attach-session -t 세션명
$ tmux attach-session -t 0
$ tmux attach-session -t sunny190729

// 세션되면 맨 아래에 세션 ID가 남음
[sunny190729] 0:sunny@sunnyPC:~*
[0] 0:sunny@sunnyPC:~*



알아둘법한 tmux 단축키

단축키 의미
<Ctrl> + b tmux 명령 접두어
tmux tmux 세션 시작
tmux -new -s session_name 세션명 지정하여 tmux 세션 시작
<Ctrl> + b + $ tmux 현재 세션 이름 변경
tmux ls 실행중인 tmux 세션 확인
tmux attach-session -t session_name 세션에 연결
<Ctrl> + b + d Tmux 세션 detached(분리)
<Ctrl> + b + ( 이전(num) 세션으로 전환
<Ctrl> + b + L 이전 세션으로 전환
<Ctrl> + b + ) 다음(num) 세션으로 전환
<Ctrl> + b + c 새 창 만들기(쉘 사용)
<Ctrl> + b + n 다음 창으로 이동
<Ctrl> + b + , 창 이름 변경
<Ctrl> + b + p 이전 창으로 이동
<Ctrl> + b + & 현재 창 종료
<Ctrl> + b + w 목록에서 창 선택
<Ctrl> + b + l 이전 창으로 전환(되돌리기)
<Ctrl> + ‘ 선택할 창 인덱스 묻기(숫자입력)
<Ctrl> + b + <num> 숫자로 창 전환
<Ctrl> + b + % 현재 창 좌우로 나누기(탭)
<Ctrl> + b + o 다음 나뉜 탭으로 이동
<Ctrl> + b + “ 현재 창 상하로 나누기(탭)
<Ctrl> + b + ; 이전에 있었던 탭으로 이동(되돌리기)
<Ctrl> + b + ! 현재 나뉜 탭 새 창으로 분리
<Ctrl> + b + m 현재 탭 확인
<Ctrl> + b + z 현재 탭 크게보기 ↔ 원래대로
<Ctrl> + b + M 탭 확인 취소
<Ctrl> + b + x 현재 탭 닫기
<Ctrl> + b + : tmux command line 입력
<Ctrl> + b + t 시계 보기
<Ctrl> + b + [ copy mode
<Ctrl> + b + q 탭 인덱스 보기
<Ctrl> + b + i 창 정보 보기
Page up / down copy mode 전환 후 스크롤
<Ctrl> + b + f 열린 창에서 텍스트 검색하기
<Ctrl> + b + 방향키 창이동
<Ctrl> + b + ? 바인딩 리스트 확인
// tmux 실행 > 하단에 ID 정보 표시
$ tmux
[0] 1:sunny@sunnyPC:~*

// tmux 새 창(탭) 만들기(쉘 사용)
// 맨 끝의 * 현재 창, - 이전 창
<Ctrl> + b + c
[0] 0:sunny@sunnyPC:~* 1:sunny@sunnyPC:~-

// tmux 새 창(탭) 한 번 더 <Ctrl> + b + c
// 아래와 같이 하단에 ID 정보 표시 후 창(탭)별로 이름이 적혀있는 것을 볼 수 있음
[0] 0:sunny@sunnyPC:~- 1:sunny@sunnyPC:~  2:sunny@sunnyPC:~*

// tmux 목록에서 창 선택, 방향키로 선택 후 <Enter>시 변경됨
<Ctrl> + b + w
(0)  0: sunny@sunnyPC:~- "sunnyPC"
(1)  1: sunny@sunnyPC:~  "sunnyPC"
(2)  2: sunny@sunnyPC:~* "sunnyPC"

// 번호로 창 전환
<Ctrl> + b + 0(또는 숫자)

// 현재 창 이름 바꾸기 (0번 창의 이름을 Sunny로 바꿈)
// 창 이름이란 [0] 1:sunny@sunnyPC:~* ← 여기서 sunny@sunnyPC:~ 이 부분을 의미한다
// 기본으로 UserName@기기명:~ 로 들어가는듯
<Ctrl> + b + ,
(rename-window) sunny@sunnyPC:~
[0] 0:sunny1- 1:sunny@sunnyPC:~  2:sunny@sunnyPC:~*



알아둘만한 tmux 명령어

명령어 의미
<Ctrl> + B + :
setw synchronize-panes on(off)
tmux command line 입력
→ 동시 입력 On / Off
(자주 사용한다면 단축키로 저장해둘 것)
bind-key y set-window-option synchronize-panes
tmux kill-session [-a] [-t 대상 세션] -a : 지정된 세션 제외 모든 세션 종료
tmux show -g | sed ‘s/^/set-option -g /’ > ~/.tmux.now.conf 현재 tmux에 설정된 값을 추출하기
tmux source-file ~/.tmux.now.conf tmux conf 적용하기



tmux는 conf default file이 없음

  • tmux는 ~/.tmux.conf 파일을 생성해 설정을 저장해둘 경우 시작할 때 자동으로 불러옴

  • .tmux.conf 파일은 자동 생성되진 않음



그 외 tmux 도구는 좋은 게 많으니까 찾아보고 설치하고 사용해 볼 것!

  • tmux 플러그인들 link

  • tmux 편집기