tmux 명령어: 세션 만들기와 떼기, 다시 붙기, Ctrl+b 단축키

SSH 접속이 끊겨도 서버에서 하던 작업을 이어 가려면 tmux 명령어로 세션을 만들고 그 안에서 작업합니다. AlmaLinux 9 서버의 tmux 3.2a로 세션을 만들고 떼었다가 다시 붙여 본 결과, 붙어 있던 터미널을 닫은 뒤에도 세션과 창, 그 안에서 실행하던 명령이 서버에 그대로 남아 있었습니다.
아래 출력은 AlmaLinux 9.8 서버(root 계정)에서 실행한 결과입니다. 세션 이름 work, mysession, dev는 예시 값입니다. 실측은 -L로 이름을 따로 준 tmux 서버에서 진행했고, 출력에 나오는 소켓 이름은 기본값(default)으로 바꿨습니다. 시각은 UTC로 출력했습니다.
1️⃣ tmux 명령어 사용법
tmux는 서버 안에 세션을 띄워 두고, 접속한 터미널이 그 세션에 붙었다가 떨어지는 구조입니다. 새 세션은 tmux new에 -s로 이름을 붙여 만듭니다.
tmux new -s work실행하면 화면이 tmux 세션으로 바뀌고, 맨 아래 초록색 상태 줄 왼쪽에 [work] 0:bash*가 나옵니다. 대괄호 안은 세션 이름이고, 0:bash는 0번 창에서 bash가 실행 중이라는 뜻입니다. 끝의 별표(*)는 지금 보고 있는 창에 붙습니다.
세션에서 빠져나올 때는 Ctrl+b를 누르고 손을 뗀 뒤 d를 누릅니다. 셸로 돌아오면서 아래 한 줄이 출력되고, 세션은 서버에 그대로 남습니다.
[detached (from session work)]세션을 떼는 것은 전화를 끊지 않고 보류 버튼을 누르는 것과 같습니다.
떼어 둔 세션은 tmux ls로 확인합니다. 줄마다 세션 이름과 창 개수, 세션을 만든 시각이 나옵니다.
tmux lswork: 1 windows (created Wed Oct 28 23:20:48 2026)다시 붙을 때는 tmux attach에 -t로 세션 이름을 적습니다. 붙어 있는 동안 tmux ls를 실행하면 그 세션 줄 끝에 (attached)가 붙습니다.
tmux attach -t work없는 이름을 적으면 붙지 않고 오류만 출력됩니다.
tmux attach -t nosuchcan't find session: nosuch세션을 만들기만 하고 붙지 않으려면 -d를 붙입니다. mysession을 -d로 만든 뒤 tmux ls를 실행하자 두 세션이 이름 순서로 나왔습니다.
tmux new -d -s mysessiontmux lsmysession: 1 windows (created Wed Oct 28 23:20:48 2026)
work: 1 windows (created Wed Oct 28 23:20:48 2026)이미 있는 이름으로 다시 만들면 새 세션은 생기지 않고 [duplicate session]으로 끝났습니다.
tmux new -d -s workduplicate session: work이때 원래 있던 work 세션은 바뀌지 않고 그대로 남아 있었습니다.
🔲 tmux 명령어 시뮬레이터
아래 시뮬레이터에서 세션을 만들고 떼었다가 다시 붙고, 붙은 화면에서 Ctrl+b 단축키로 창과 칸을 나눠 볼 수 있습니다.
2️⃣ tmux 단축키와 창 나누기
세션 하나에는 창(window)을 여러 개 둘 수 있고, 창 하나는 다시 칸(pane)으로 나뉩니다. 서버와 세션, 창, 칸의 관계는 아래와 같습니다.
붙은 화면에서 쓰는 tmux 단축키는 접두 키(prefix) Ctrl+b를 먼저 누르고 손을 뗀 뒤 다음 키를 누르는 방식입니다. 지금 설정된 접두 키는 show-options로 확인합니다.
tmux show-options -g prefixprefix C-bC-b는 Ctrl+b를 뜻합니다. Ctrl+b 다음에 누르는 키와 하는 일, 같은 일을 하는 명령은 아래와 같습니다.
| Ctrl+b 다음 키 | 하는 일 | 같은 명령 |
|---|---|---|
| d | 지금 세션에서 떼기 | detach-client |
| c | 새 창 만들기 | new-window |
| n · p | 다음 창 · 이전 창 | next-window · previous-window |
| 0~9 | 그 번호의 창으로 | select-window |
| % | 지금 칸을 좌우로 나누기 | split-window -h |
| " | 지금 칸을 위아래로 나누기 | split-window |
| o · 방향키 | 다음 칸 · 그 방향의 칸으로 | select-pane |
| z | 지금 칸만 크게 보기(한 번 더 누르면 원래대로) | resize-pane -Z |
| x | 지금 칸 닫기(y로 확인) | kill-pane |
| , | 지금 창 이름 바꾸기 | rename-window |
| $ | 지금 세션 이름 바꾸기 | rename-session |
| s | 세션 목록에서 골라 옮기기 | choose-tree -Zs |
단축키 대신 명령으로도 창과 칸을 만들 수 있고, 세션에 붙어 있지 않을 때는 -t로 대상 세션을 지정합니다. new-window를 실행하자 work 세션에 1번 창이 생겼습니다.
tmux new-window -t worktmux list-windows -t work0: bash- (1 panes) [80x23] [layout ae5d,80x23,0,0,0] @0
1: bash* (1 panes) [80x24] [layout b25e,80x24,0,0,1] @1 (active)창 이름 뒤 별표(*)는 지금 창, 빼기(-)는 바로 전에 보던 창입니다. 줄 끝 @ 뒤의 숫자는 tmux 서버 안에서 창마다 붙는 번호입니다.
split-window는 지금 칸을 위아래로 나누고, -h를 붙이면 좌우로 나눕니다. 1번 창을 위아래로 나눈 뒤 아래 칸을 다시 좌우로 나누자 칸이 셋이 되었습니다.
tmux split-window -v -t worktmux split-window -h -t worktmux list-panes -t work0: [80x12] [history 0/2000, 484 bytes] %1
1: [40x11] [history 0/2000, 402 bytes] %2
2: [39x11] [history 0/2000, 397 bytes] %3 (active)80×24 창을 위아래로 나누자 위 칸은 80×12, 아래 칸은 80×11이 되었습니다. 남은 한 줄은 두 칸 사이의 경계선이 차지합니다. 좌우로 나눈 40×11과 39×11 사이에서도 한 칸이 경계선입니다.
tmux list-windows -t work0: bash- (1 panes) [80x23] [layout ae5d,80x23,0,0,0] @0
1: bash* (3 panes) [80x24] [layout f160,80x24,0,0[80x12,0,0,1,80x11,0,13{40x11,0,13,2,39x11,41,13,3}]] @1 (active)list-windows를 다시 실행하자 1번 창의 칸 수가 3으로 바뀌어 있었고, layout 뒤에 칸 셋의 크기와 위치가 이어서 나왔습니다.
3️⃣ tmux 세션 이름 변경과 종료
tmux 세션 이름은 rename-session으로 바꿉니다. -t에 지금 이름을 적고, 그 뒤에 새 이름을 적습니다.
tmux rename-session -t mysession devtmux lsdev: 1 windows (created Wed Oct 28 23:20:48 2026)
work: 2 windows (created Wed Oct 28 23:20:48 2026)세션 이름에 넣은 점(.)은 밑줄(_)로 바뀝니다. my.session으로 만든 세션이 tmux ls에는 my_session으로 나왔습니다.
tmux new -d -s my.sessiontmux lsmy_session: 1 windows (created Wed Oct 28 23:51:42 2026)세션 하나를 닫을 때는 kill-session에 -t로 세션 이름을 적습니다. 그 세션의 창도 모두 함께 닫힙니다.
tmux kill-session -t devtmux lswork: 2 windows (created Wed Oct 28 23:20:48 2026)이미 닫은 이름을 다시 적으면 [can’t find session]이 출력됩니다.
tmux kill-session -t devcan't find session: dev붙어 있는 세션을 다른 터미널에서 kill-session으로 닫자, 그 세션에 붙어 있던 화면은 셸로 돌아오면서 아래 한 줄을 출력했습니다.
[exited]kill-server는 세션을 모두 닫고 tmux 서버까지 끝냅니다. 서버가 끝난 뒤 tmux ls를 실행하면 실행 중인 서버가 없다는 문구가 출력됩니다.
tmux kill-servertmux lsno server running on /tmp/tmux-0/default끝의 /tmp/tmux-0/default는 root 계정의 기본 소켓 위치입니다. 다른 계정은 tmux- 뒤에 그 계정의 사용자 번호가 붙습니다.
4️⃣ tmux SSH 접속 끊김과 옵션
🔲 SSH 접속 끊김
[Ctrl+b d]로 떼지 않고 접속이 그냥 끊겨도 세션은 서버에 남습니다. SSH 연결이 끊긴 상황처럼 work 세션에 붙어 있던 터미널을 통째로 닫은 뒤 tmux ls를 실행했습니다.
tmux lswork: 2 windows (created Wed Oct 28 23:21:04 2026)닫기 전 work 줄 끝에 있던 (attached)만 빠지고, 창 두 개는 그대로 남아 있었습니다.
붙어 있는 사람이 없어도 세션 안의 명령은 계속 실행됩니다. 1초마다 시각을 출력하는 명령을 떼어 둔 세션(job)에서 실행한 뒤, capture-pane으로 그 세션의 화면을 읽었습니다.
tmux new -d -s job 'for i in 1 2 3; do date +%H:%M:%S; sleep 1; done; exec bash'sleep 4tmux capture-pane -p -t job | head -323:21:49
23:21:50
23:21:51세 줄은 아무도 붙어 있지 않은 3초 동안 세션 안에서 출력된 시각입니다. 오래 걸리는 백업이나 업데이트를 tmux 세션 안에서 시작해 두면, 접속이 끊긴 뒤에도 다시 붙어 그 화면을 이어서 확인할 수 있습니다.
화면을 다시 볼 필요 없이 명령 하나를 끝까지 실행하기만 할 때는 nohup으로 백그라운드 실행을 하는 방법도 있습니다. 접속이 끊겨도 작업을 남기는 방법 셋을 비교하면 아래와 같습니다.
| 방법 | 접속이 끊긴 뒤 | 다시 보기 |
|---|---|---|
| tmux | 세션과 창, 칸이 서버에 남음 | tmux attach -t 세션 이름 |
| screen | 세션이 서버에 남음(떼기는 Ctrl+a d) | screen -r |
| nohup | 명령 하나만 계속 실행 · 출력은 nohup.out 파일 | 화면에 다시 붙지 않고 출력 파일로 확인 |
🔲 tmux 명령어 옵션
📌 주요 명령어 옵션: 이 글에서 실행한 결과
| 명령 | 하는 일 | 이 글에서 본 결과 | |
|---|---|---|---|
| tmux new -s 이름 | 이름을 붙여 새 세션을 만들고 붙음 | 상태 줄 왼쪽에 [work] 0:bash*가 나옴 | |
| tmux new -d -s 이름 | 세션을 만들기만 하고 붙지 않음 | mysession을 만든 뒤 tmux ls에 두 세션이 이름 순서로 나옴, 같은 이름은 [duplicate session] | |
| tmux ls | 세션 목록과 창 개수, 만든 시각을 출력 | work: 1 windows (created …), 붙어 있는 세션은 끝에 (attached) | |
| tmux attach -t 이름 | 떼어 둔 세션에 다시 붙음 | 없는 이름은 [can't find session: nosuch] | |
| tmux new-window -t 이름 | 그 세션에 새 창을 만듦 | work 세션에 1번 창이 생김 | |
| tmux split-window -h -t 이름 | 지금 칸을 나눔, -v는 위아래, -h는 좌우 | 80×24 창이 80×12와 40×11, 39×11 세 칸이 됨 | |
| tmux list-panes -t 이름 | 지금 창의 칸 목록과 크기를 출력 | 칸 셋이 0~2번으로 나오고 마지막 칸 끝에 (active) | |
| tmux rename-session -t 이름 새이름 | 세션 이름을 바꿈 | mysession이 dev로 바뀜, 이름 속 점(.)은 밑줄(_)로 바뀜 | |
| tmux kill-session -t 이름 | 세션 하나와 그 창을 모두 닫음 | 붙어 있던 화면은 [exited]를 출력하고 셸로 돌아옴 | |
| tmux kill-server | 세션을 모두 닫고 tmux 서버까지 끝냄 | 그 뒤 tmux ls는 [no server running on /tmp/tmux-0/default] | |
| tmux capture-pane -p -t 이름 | 그 세션 화면의 글자를 출력 | 아무도 붙어 있지 않은 3초 동안 찍힌 시각 세 줄이 나옴 |
📎 그 밖의 옵션: 공식 매뉴얼 기준
| 명령 | 하는 일 | |
|---|---|---|
| tmux new -A -s 이름 | 같은 이름의 세션이 있으면 그 세션에 붙고, 없으면 새로 만듦 | |
| tmux new -s 이름 -n 창이름 | 세션의 첫 창에 이름을 붙여 만듦 | |
| tmux attach -d -t 이름 | 그 세션에 붙어 있던 다른 터미널을 떼고 붙음 | |
| tmux detach-client -s 이름 | 그 세션에 붙어 있는 터미널을 모두 뗌 | |
| tmux switch-client -t 이름 | 붙어 있는 화면을 다른 세션으로 옮김 | |
| tmux rename-window -t 창 새이름 | 창 이름을 바꿈 | |
| tmux select-pane -t 칸 | 지정한 칸을 지금 칸으로 고름, -L, -R, -U, -D는 왼쪽, 오른쪽, 위, 아래 칸 | |
| tmux resize-pane -D 5 | 칸 크기를 줄 수나 칸 수만큼 바꿈, -x와 -y는 절대 크기 | |
| tmux kill-pane -t 칸 | 칸 하나를 닫음, 마지막 칸이면 창도 닫힘 | |
| tmux kill-window -t 창 | 창 하나를 닫음 | |
| tmux list-keys | 단축키 목록을 bind-key 명령 꼴로 출력 | |
| tmux source-file 파일 | 설정 파일의 명령을 다시 읽어 실행 | |
| tmux -f 파일 | /etc/tmux.conf, ~/.tmux.conf 대신 다른 설정 파일로 시작 | |
| tmux -V | tmux 버전을 출력 |
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.