우분투 실전 명령어 | screen 세션 분리/복구 운영
언제 쓰는가
SSH로 작업하다가 접속이 자주 끊기거나, 여러 터미널 작업을 한 번에 오래 돌려야 할 때 screen이 가장 간단한 안전장치가 된다.
특히 빌드, 로그 모니터링, 배치 실행처럼 길게 도는 작업을 세션 단위로 분리해두면 재접속 후에도 바로 이어서 볼 수 있다.
바로 쓰는 명령어
# 새 세션 생성
screen -S deploy-job
# 분리(detach): Ctrl+a, d
# 다시 붙기(attach)
screen -r deploy-job
# 현재 세션 목록 확인
screen -ls
# 강제로 붙기(다른 터미널에 붙어 있어도 회수)
screen -D -r deploy-job
핵심 옵션/패턴
screen -S 이름으로 세션 이름을 명확히 잡아두면 운영 중 구분이 쉽다.- 작업 시작 전에 세션을 먼저 열고, 그 안에서 명령을 실행하는 습관이 안전하다.
screen -D -r은 세션이 이미 붙어 있을 때 회수해서 붙는 실전 패턴이다.- 로그 확인용 창, 명령 실행 창을 나눠 쓰면 장애 대응 속도가 빨라진다.
명령 출력 예시
$ screen -ls
There are screens on:
31877.deploy-job (Detached)
30512.log-watch (Detached)
2 Sockets in /run/screen/S-ubuntu.
$ screen -r deploy-job
[detached from 31877.deploy-job]
$ screen -D -r deploy-job
[remote detached from 31877.deploy-job]
자주 하는 실수
- 세션 이름 없이 기본값으로만 생성한다. 세션이 많아지면 어떤 작업인지 구분이 안 된다.
- 분리 단축키를 몰라서 터미널을 그냥 닫아버린다. 작업은 살아 있어도 상태 확인이 늦어진다.
- attach 실패 시 바로 새 세션을 만든다. 기존 세션이 남아 중복 작업을 일으키기 쉽다.
- 장기 실행 작업인데 로그를 파일로 남기지 않는다. 문제가 나면 원인 추적이 어렵다.
검증 방법
# 세션이 살아있는지 확인
screen -ls
# 특정 작업 프로세스 확인
pgrep -af "deploy.sh|python3|node"
# 필요 시 세션 내부에서 실행 중인 명령의 출력 확인
tail -n 100 /var/log/deploy.log
운영 팁
운영 서버에서는 세션 이름에 날짜나 작업 종류를 붙이면 인수인계가 쉬워진다.
예를 들어 deploy-20260218, etl-nightly처럼 규칙을 정해두면 장애 시점 추적이 훨씬 빨라진다.
출처
- GNU Screen Manual
- Ubuntu Server Guide
- Debian Wiki