tmux는 터미널 하나 안에서 여러 셸을 띄우고 나누는 터미널 멀티플렉서(terminal multiplexer)다. 가장 큰 장점은 세션이 터미널과 분리돼 계속 살아 있다는 것이다. SSH가 끊겨도 서버의 작업은 계속 돌고, 다시 붙으면 그대로 이어진다.
구조
세션(session) 안에 윈도우(window, 탭)가 있고, 윈도우를 패인(pane)으로 나눈다. 모든 단축키는 프리픽스 Ctrl+b를 먼저 누른 뒤 입력한다.
| 키 | 동작 |
|---|---|
% / " | 세로 / 가로 분할 |
| 방향키 | 패인 이동 |
z | 현재 패인 확대·복귀 |
x | 현재 패인 닫기 |
c / n / p / 숫자 | 새 윈도우 / 다음 / 이전 / 번호로 이동 |
, | 윈도우 이름 변경 |
d | 세션에서 분리(detach) |
s | 세션 목록 |
[ | 복사 모드(나갈 때 q) |
! | 패인을 새 윈도우로 떼어내기 |
tmux new -s api # 이름 붙여 새 세션
tmux ls # 세션 목록
tmux attach -t api # 다시 붙기
tmux rename-session -t 0 api설정 예
# ~/.tmux.conf (적용: tmux source-file ~/.tmux.conf)
set -g mouse on
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"떼어낸 패인을 다시 붙일 때는 명령 모드(Ctrl+b :)에서 join-pane -h -s <윈도우번호>를 쓴다. 프리픽스를 Ctrl+a로 바꾸는 사람도 많다. vi 키 바인딩에 익숙하다면 IDE에서 Vim 쓰기, 셸 설정은 zsh·oh-my-zsh 터미널 환경과 함께 보면 좋다. 오래 도는 서버 프로세스를 띄워 둘 때 쓰기 좋지만, 운영 환경의 상주 프로세스는 macOS launchd로 상주 프로세스 띄우기나 systemd 같은 프로세스 매니저에 맡긴다.