home

Screen을 사용해 배치작업 하기

CloudWatch 로그 이관 작업과 Screen의 만남

CloudWatch 자체에서 제공하는 “S3 Export” 기능은 사용하기에 불편한 점이 많아서, EC2에 스크립트를 올려서 로그를 추출하는 방식으로 진행하고 있습니다.

그러던 중 nohup보다 훨씬 편리한 screen이라는 도구를 발견했습니다.

Screen이란?

Screen은 가상 터미널을 생성해서 별도의 프로세스를 백그라운드에서 실행할 수 있게 해주는 도구입니다. 마치 여러 개의 모니터를 사용하듯이 여러 화면을 전환하며 작업할 수 있죠.

screen -ls 명령어를 실행하면 위처럼 현재 실행 중인 세션 목록이 나옵니다. 여기서 screen -r 15131로 특정 세션에 다시 접속할 수 있어요.

세션에 접속하면 이런 식으로 작업 중인 화면을 볼 수 있습니다. 스크린 샷에는, 멱등성을 보장하도록 작성한 로그 추출 스크립트가 안정적으로 실행되고 있습니다.

아래에 자주 사용하는 Screen 명령어를 정리해봤습니다.

기본 명령어

  • screen: 기본 세션 생성 및 진입 (이름 자동 할당)
  • screen -S [세션명]: 지정한 이름으로 세션 생성
  • screen -ls: 실행 중인 세션 목록 확인
  • screen -r [세션명]: 기존 세션 재접속 (없으면 실패)
  • screen -R [세션명]: 세션 재접속 (없으면 새로 생성)
  • screen -x [세션명]: 다중 사용자 공유 모드로 재접속
  • screen -X -S [세션명] kill: 지정 세션 종료

세션 내부 단축키

세션 진입 후 Ctrl + a로 시작하는 키 바인딩을 사용합니다.

  • Ctrl + a, d: 세션 분리 (detach, 백그라운드 유지)
  • Ctrl + a, c: 새 창 생성
  • Ctrl + a, n: 다음 창 이동
  • Ctrl + a, p: 이전 창 이동
  • Ctrl + a, k: 현재 창 종료
  • Ctrl + a, ?: 도움말 보기