몰입과 소통

Linux/Ubuntu에서 Screen 설치 및 사용하기 본문

개발

Linux/Ubuntu에서 Screen 설치 및 사용하기

Dev Teddy 2024. 3. 6. 20:00

Putty나 MobaXterm과 같은 원격 접속 유틸을 사용하다 보면 Screen을 한 번쯤은 듣게 되실 겁니다.

Screen은 터미널 세션을 관리하기 위한 유틸리티입니다.

리눅스와 CLI 환경에 익숙해지면 여러 터미널을 켜놓고 다양한 작업을 동시에 수행하는데요.

이때 스크린을 사용하면 여러 터미널 세션을 하나의 물리적 터미널 내에서 생성, 관리 및 전환할 수 있습니다. 

 

저는 원격 서버에서 AI 모델을 학습할때 아래 3가지 이유로 Screen을 사용합니다.

  1. 장기 실행 작업 관리 : AI 모델 학습은 종종 몇 시간에서 며칠까지 걸립니다. Screen을 사용하면 원격 서버에 로그인하여 학습을 시작한 후, 세션을 분리(detach)하고 로컬 PC를 종료할 수 있습니다. 나중에 다시 원격 서버에 접속하여 학습 프로세스가 실행 중인 Screen 세션에 다시 연결(attach)할 수 있습니다.
  2. 네트워크 불안정성 대비 : 원격 학습 작업 중 네트워크 연결이 끊어져도 Screen은 세션을 유지합니다. 이로 인해 네트워크 문제로 인한 학습 중단의 리스크를 줄일 수 있습니다.
  3. 여러 학습 작업 관리 : 동시에 여러 AI 모델을 학습시키는 경우, Screen을 사용하면 각각의 학습 작업을 별도의 세션으로 관리할 수 있습니다. 이를 통해 각 작업을 개별적으로 모니터링하고 관리하는 것이 더욱 용이해집니다.

Screen을 사용하면 AI 모델 학습 프로세스 관리가 훨씬 유연해지며, 원격 작업이 더 편리해집니다.

그럼 설치 시작하겠습니다.


1. 설치

기본적으로 리눅스 배포판에서는 스크린을 기본 패키지 저장소를 통해 설치할 수 있습니다.

sudo apt-get install screen

 

2. 설정 변경

nano를 사용해서 screenrc로 접속합니다.

sudo nano ~/.screenrc

 

아래 내용을 붙여 넣고 저장(Ctrl+O)합니다.

defscrollback 5000
termcapinfo xterm* ti@:te@
startup_message off
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n*%t%{-}%+w %= %c $USER@%H"
bindkey -k k1 select 0
bindkey -k k2 select 1
bindkey -k k3 select 2

nano로 screenrc에 접속한 예시

 

3. 테스트

설정이 끝났다면, Screen을 실행하여 터미널 아래 파란색 줄이 생기는 것을 확인합니다.

# Screen 시작
screen

설정 후 Screen의 출력 예시

 

4. 주요 명령어

다음은 Screen을 활용할때 유용한 주요 명령어입니다.

# 세션 시작하기: 새로운 Screen 세션을 시작합니다.
screen

# 세션에 이름 붙여서 시작하기: 이름을 지정하여 새로운 Screen 세션을 시작합니다.
screen -S [세션 이름]

# 세션 목록 보기: 현재 실행 중인 모든 Screen 세션을 보여줍니다.
screen -ls

# 세션에 재접속하기: 분리된 세션에 다시 접속합니다.
screen -r [세션 ID 또는 이름]


# Screen 세션 내에서 유용한 명령어
# 세션 내에서 새 창 생성: 세션 내에서 새 창을 생성합니다.(아래 0, 1, 2 bash가 1개씩 늘어납니다.)
Ctrl + A + C

# 세션 내에서 창 이동: 세션 내에서 창을 이동합니다.
Ctrl + A + 창 번호(숫자)

# 세션 나가기: 현재 세션에서 나가지만, 세션을 종료하지는 않습니다.
Ctrl + A + D

 

오늘은 리눅스 Screen을 탐색해 보면서, 터미널 프로세스를 효과적으로 관리할 수 있는 방법을 알아보았습니다.

이 글을 통해 공유한 명령어와 Screen의 추가적인 기능들을 탐색해보는 것도 잊지 마시길 바랍니다.

 

궁금한 점이 있으시면 댓글이나 이메일로 문의해 주세요. 확인하는 대로 답변드리겠습니다.