tmux란?
tmux가 무엇인가요?
쉽게 말해서 panel, window, session을 관리하는 도구입니다. 패널은 화면상에 보이는 영역을 의미하비다. windows는 분할 시켜놓은 패널 설정 창입니다. 그래서 window를 옮겨가면 내가 임의로 설정해놓은 분할 패널을 사용할 수 있습니다. 마지막으로 세션은 winodow들이 모여있는 작업 공간이라고 생각하시면 됩니다.
tmux의 장점?
그러면 사실상 클러스터에서 alt + d 또는 alt + shift + d 의 기능으로 사용하는 것과 기능이 비슷한데 어떠한 장점이 있을까요? 바로 터미널을 ctr + q로 종료를 하더라도 tmux는 계속 작업공간에 남아 있기 때문에 우리가 설정해 놓은 session들을 불러올 수 있습니다.
나중에 무거운 프로그램의 빌드 작업을 해놓아야 하는 경우, 이 tmux를 사용하여 터미널 창을 끄더라도 계속 빌드가 이루어질 수 있도록 할 수 있는거죠.
tmux 설치
$ brew install tmux
Shell
복사
: tmux의 설치는 상당히 간단합니다. Mac OS 기준 Homebrew를 통해 설치가 가능합니다.
tmux 시작
tmux 사용
tmux 명령어
$ tmux # 세션을 시작하고 참가한다.
$ tmux new -s work # 세션 work를 시작하고 참가한다
Plain Text
복사
: tmux를 시작하기 위해서는 쉘에 tmux 라고 타이핑을 하게 되면, tmux 터미널로 새롭게 열리게 됩니다. tmux에서는 중요한 키가 있는데 바로 ‘Prefix key’ 입니다. Prefix key는 어떤 기능을 사용하는 것을 미리 알리는 기능이라고 보시면 됩니다. 기본 디폴트 되어있는 Prefix key는 ctrl + b 입니다.
하지만 ctrl + b는 사용하기에 불편한 위치에 있으므로 우리는 tmux의 설정을 추가하여 마음대로 키를 변경할 수 있습니다. 아래에는 기본 단축키를 첨부하도록 하겠습니다.
기본 단축키
tmux 종료
#panel 종료
ctrl + d (기존 터미널 단축키)
ctrl + t -> x (tmux 단축키)
#windows 종료
ctrl + t -> & (tmux 단축키
#session 종료
ctrl + d 여러번 (기존 터미널 단축키)
ctrl + t -> & 여러번 (tmux 단축키)
ctrl + t -> d (tmux 종료하지 않고 나가기)
$ tmux kill-session -t 이름
#모든 session 종료
$ tmux kill-server
Bash
복사
tmux 설정(vim ~/.tmux.conf)
tmux의 설정을 하기 위해서는 .tmux.conf라는 파일을 만들어야 합니다. 우리가 vim을 설정하기 위해서 .vimrc를 수정하는 것과 같은 맥락이라고 보시면 됩니다.
Prefix key 변경
set-option -g prefix C-t
unbind-key C-b
bind-key C-t send-prefix
Bash
복사
: 위의 내용을 .tmux.conf에 넣어주고, tmux를 재시작 해주면 ctrl + t가 Prefix key로 설정됩니다.
Reload
# prefix r 을 누르면 .tmux.conf 를 읽어서 적용
bind r source-file ~/.tmux.conf \; display "Reloaded!"
Bash
복사
: tmux 설정을 바꿀 때마다 재시작하는 번거로움이 있으므로, 위에 기능을 .tmux.conf에 추가하여 Prefix key를 누른 뒤 r을 누르면 파일이 업데이트 되는 기능을 추가해줍니다.
가로 세로 분할
# vim’s definition of a horizontal/vertical split is reversed from tmux’s
bind s split-window -h
bind v split-window -v
unbind '"'
unbind %
Bash
복사
: 기존 화면 분활은 Prefix key를 누루고 “와 %를 눌러서 기능을 하게 됩니다. 하지만 직관적인 키가 아니기 때문에 다음과 같이 설정에 추가하여 s키는 가로 분할,v 키는 세로 분할로 설정해줍니다. 이렇게 설정해놓으면 ctrl + t (prefix key)를 누르고 s를 누르면 세로 분할이 되고, v를 누르면 가로 분할이 됩니다.