목차5개 항목
출처와 참고
팔만코딩경(42Seoul 커뮤니티 위키)의 「Terminal Multiplexer(tmux) 짧은 소개」를 바탕으로 재구성한 노트다. 원 자료는 MIT 「The Missing Semester」의 Command-line Environment 강의다.
터미널 멀티플렉서란
터미널 멀티플렉서(terminal multiplexer) 는 터미널 창 하나 안에서 여러 개의 셸을 띄우고, 그 셸들을 터미널과 떼어 백그라운드에 살려 두는 프로그램이다. 대표가 tmux이고, 더 오래된 GNU screen, 설정이 쉬운 Zellij가 있다.
| 쓰는 상황 | tmux 없이 | tmux로 |
|---|---|---|
| SSH로 서버에 붙어 여러 작업을 동시에 | 접속을 여러 번 연다 | 접속 하나에서 창·분할 화면을 나눈다 |
| 오래 걸리는 작업을 돌려 두고 다른 일 | &, nohup으로 백그라운드 실행 | 그 창은 두고 다른 창으로 간다 |
| 작업 중 연결이 끊김 | 셸과 함께 작업이 죽는다(nohup 제외) | 세션이 서버에 남아 다시 붙으면 그대로다 |
| 한 화면에서 에디터·서버 로그·셸을 같이 | 터미널 앱의 탭·분할 기능 | 어느 터미널에서든 같은 배치를 재현 |
nohup은 프로그램 하나를 끊김에서 살려 줄 뿐이고, 화면 출력이나 대화형 프로그램(에디터, REPL)은 다시 볼 수 없다. tmux는 셸 자체를 살려 두므로 다시 붙으면 화면까지 그대로다.
구성: 세션 › 창 › 패인
flowchart TB
srv["tmux 서버"] --> ses["세션(session)<br/>#quot;work#quot;, #quot;blog#quot; 처럼 작업 단위. detach해도 남는다"]
ses --> win["창(window)<br/>브라우저 탭처럼 전환하는 전체 화면"]
win --> pane["패인(pane)<br/>한 창을 가로·세로로 나눈 각각의 셸"]기본 사용법
tmux의 단축키는 모두 프리픽스 키(기본 Ctrl-b)를 먼저 누른 뒤 다음 키를 누른다. 아래 표의 <p>가 프리픽스다.
| 동작 | 명령 · 키 |
|---|---|
| 새 세션 시작 | tmux new -s work |
| 세션 목록 | tmux ls |
| 세션에 다시 붙기 | tmux attach -t work (tmux a는 마지막 세션) |
| 세션에서 떼기(detach) | <p> d |
| 새 창 / 다음·이전 창 | <p> c / <p> n, <p> p |
| 창 번호로 이동 | <p> 0~<p> 9 |
| 세로 분할 / 가로 분할 | <p> % / <p> " |
| 패인 이동 | <p> 방향키 |
| 현재 패인 확대 토글 | <p> z |
| 스크롤·복사 모드 | <p> [ (빠져나오기 q) |
| 패인 닫기 | exit 또는 <p> x |
설정은 ~/.tmux.conf에 둔다. 프리픽스를 Ctrl-a로 바꾸거나 마우스 스크롤을 켜는 정도로 시작하는 경우가 많다.
# ~/.tmux.conf
set -g mouse on # 마우스로 패인 선택·크기 조절·스크롤
set -g base-index 1 # 창 번호를 1부터여러 기기 잇기: SSH와 메시 VPN
데스크톱·노트북·NAS를 오가며 개발하면 한 기기의 셸과 파일을 다른 기기에서 쓰고 싶어진다. 어디서 붙느냐에 따라 고른다.
| 상황 | 방법 | 요점 |
|---|---|---|
| 기기들이 같은 네트워크(집·사무실 공유기)에 있다 | SSH | 가장 단순하다. 비밀번호 대신 키로 인증하고, ~/.ssh/config에 Host 별칭을 적어 ssh desktop처럼 붙는다 |
| 밖에서 집 기기에 붙어야 한다 | 메시 VPN (Tailscale 등) | WireGuard 기반으로 기기마다 사설 주소를 주고 기기끼리 직접 잇는다. 공유기 포트 포워딩이나 공인 IP 없이 SSH가 된다 |
| 포트를 열어 직접 노출 | 비권장 | SSH 포트를 인터넷에 열면 무차별 대입 공격을 받는다. 열어야 한다면 키 인증만 허용하고 비밀번호 로그인을 끈다 |
어느 방법이든 붙은 뒤에는 tmux 세션 안에서 일한다. 노트북을 닫거나 네트워크가 바뀌어 연결이 끊겨도 작업은 원격 기기에 그대로 남는다. 편집기까지 원격으로 쓰려면 VS Code의 Remote SSH가 같은 연결을 쓴다(VS Code 설정과 활용).
정리
- tmux는 터미널 하나에서 세션·창·패인을 나누고, 세션을 터미널과 떼어 살려 둔다.
- 원격 서버 작업의 핵심 이점은 연결이 끊겨도 작업과 화면이 남는다는 것이다.
- 모든 키는 프리픽스(
Ctrl-b) 다음에 누른다.d로 떼고tmux attach로 다시 붙는다. - 같은 네트워크의 기기는 SSH로, 밖에서 붙을 때는 메시 VPN 위의 SSH로 잇고, 그 안에서 tmux를 쓴다.