Linux에서의 screen 활용과 백그라운드 작업 관리

screen을 통한 장기 실행 작업 관리

Linux 환경에서 오랜 시간이 소요되는 작업(예: 대용량 파일 다운로드, 소스 코드 컴파일 등)을 수행할 때, 터미널 연결 끊김이나 세션 종료로 인해 작업이 중단되는 문제를 방지하기 위해 screen 도구를 사용할 수 있습니다. screen은 독립된 가상 터미널 세션을 생성하여, 네트워크 연결이 끊겨도 프로세스가 계속 실행되도록 해줍니다.

설치 방법

# CentOS 계열
sudo yum install screen

# Debian/Ubuntu 계열
sudo apt-get install screen

기본 사용법

이름을 지정한 새로운 screen 세션을 생성하려면:

screen -S compile_session

이름을 생략하면 자동으로 생성되지만, 목적에 맞는 이름을 붙이는 것이 이후 관리에 유리합니다(예: -S backup, -S debug). Tab 키 자동 완성도 지원됩니다.

세션 내부에 진입한 후에는 일반적인 터미널 조작이 가능하지만, 일부 키바인딩이 변경됩니다. 예를 들어 Ctrl+A는 screen의 제어 키로 사용되므로, 명령어 시작으로 이동하려면 Ctrl+AA 순으로 입력해야 합니다.

세션 분리 및 재접속

현재 세션을 백그라운드로 전환하려면:

screen -d

또는 세션 내에서 Ctrl+A, D를 입력합니다. 이렇게 하면 작업은 계속 진행되며, 터미널을 닫아도 영향을 받지 않습니다.

나중에 다시 접속하려면:

screen -r compile_session

활성 세션 확인

현재 존재하는 모든 screen 세션을 확인하려면:

screen -ls

출력 결과에서 (Detached)는 분리된 상태, (Attached)는 현재 접속 중인 상태를 의미합니다.

세션 종료

세션 내부에 접속한 후 일반적인 쉘 종료 명령어로 종료합니다:

exit

또는 Ctrl+D를 입력해도 동일한 효과가 있습니다.

유용한 단축키

  • Ctrl+A, C: 새 창 생성
  • Ctrl+A, D: 세션 분리
  • Ctrl+A, W: 창 목록 표시
  • Ctrl+A, N: 다음 창으로 전환
  • Ctrl+A, P: 이전 창으로 전환
  • Ctrl+A, 0~9: 특정 번호의 창으로 이동

잡(job) 기반 백그라운드 작업 제어

쉘에서는 foreground와 background에서 실행 중인 여러 작업을 동시에 관리할 수 있습니다. 이를 '잡(jobs)'이라고 부르며, 사용자는 필요에 따라 작업 간 전환을 할 수 있습니다.

잡 생성 및 일시 정지

예를 들어, 파일 편집 중 다른 작업을 수행하고 싶다면:

vim config.yaml

편집 도중 Ctrl+Z를 누르면 해당 작업이 일시 정지(suspended)되고 쉘로 돌아옵니다.

백그라운드 재개

정지된 작업을 백그라운드에서 계속 실행하려면:

bg

여러 개의 잡이 있을 경우, 특정 번호의 작업을 지정할 수 있습니다:

jobs
# 출력 예:
# [1]  + suspended  vim config.yaml
# [2]  - suspended  vim notes.txt

bg %2

이때 +는 가장 최근에 백그라운드로 전환된 작업, -는 그 다음 작업을 의미합니다.

포그라운드 복귀

일시 중단된 작업을 다시 화면 상단에서 재개하려면:

fg

특정 작업을 선택하려면:

fg %1

잡 상태 확인

현재 셸에서 관리 중인 모든 작업을 확인하려면:

jobs

각 작업의 상태(suspended, running 등)와 ID를 확인할 수 있습니다.

실제 활용 사례

개발 시 서버를 백그라운드에서 구동하고 클라이언트 테스트를 동시에 수행하는 시나리오에서 유용합니다:

python3 -m http.server 8000
# 서버 실행 후 Ctrl+Z로 정지 → bg로 백그라운드 실행 전환
bg
# 이후 다른 쉘 명령어로 테스트 수행
curl localhost:8000

태그: screen job control linux background process Shell

7월 13일 17:01에 게시됨