티스토리 뷰

SSH로 원격 서버에 접속해서 작업할 때, 터미널이 꺼지거나 네트워크가 끊기면 실행 중인 프로세스가 죽어버리는 문제가 있습니다. tmux를 사용하면 이 문제를 해결할 수 있습니다.


tmux란?

터미널 멀티플렉서(Terminal Multiplexer)입니다. 핵심 개념은 세션(session)인데, SSH 연결이 끊겨도 세션은 서버에서 계속 살아있습니다. 나중에 다시 접속해서 그 세션에 붙으면(attach) 작업이 그대로 유지되어 있습니다.


기본 사용법

1. 세션 생성

tmux new -s mysession

mysession이라는 이름의 세션을 만들고 바로 접속합니다.

2. 세션에서 분리 (detach)

tmux detach-client -s mysession

또는 세션 안에서 단축키 Ctrl+BD를 누르면 됩니다.

detach는 세션을 종료하는 게 아닙니다. 세션에서 "분리"만 하는 것이고, 세션은 백그라운드에서 계속 실행됩니다.

3. 세션 다시 접속 (attach)

tmux attach -t mysession

SSH를 다시 연결한 뒤 이 명령어를 치면, 이전 작업 화면이 그대로 나타납니다.

4. 세션 목록 확인

tmux ls

현재 살아있는 세션 목록을 확인할 수 있습니다.

5. 세션 완전 종료

tmux kill-session -t mysession

이건 세션을 아예 종료하는 것이므로, 실행 중인 프로세스도 함께 죽습니다.


흔한 실수: tmux detach -t 오류

$ tmux detach -t mysession
can't find client: mysession

detach -t클라이언트(접속한 터미널)를 지정하는 옵션인데, 세션 이름을 넣었기 때문에 에러가 발생합니다.

올바른 사용법:

# 세션 이름으로 detach (해당 세션의 모든 클라이언트를 분리)
tmux detach-client -s mysession

# 또는 클라이언트를 직접 지정
tmux list-clients          # 클라이언트 확인
tmux detach-client -t /dev/pts/1  # 해당 클라이언트 분리

정리

명령어 동작
tmux new -s 이름 새 세션 생성
tmux attach -t 이름 세션에 다시 접속
tmux detach-client -s 이름 세션에서 분리 (세션은 유지)
tmux ls 세션 목록 확인
tmux kill-session -t 이름 세션 완전 종료
Ctrl+BD 세션 안에서 바로 detach

실제 활용 예시

저는 SSH로 GPU 서버에 접속해서 딥러닝 학습을 돌릴 때 tmux를 사용하고 있습니다.

# 1. 서버 접속 후 세션 생성
tmux new -s training

# 2. 학습 시작
python train.py

# 3. Ctrl+B → D로 detach (학습은 계속 진행)

# 4. 퇴근 후 집에서 다시 접속
ssh myserver
tmux attach -t training
# → 학습 진행 상황이 그대로 보임

SSH 연결이 불안정하거나, 장시간 실행되는 작업이 있을 때 tmux는 필수입니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함