카테고리 없음

screen 명령어 모음 / 코드 돌릴 때 서버 꺼지지않게

도도걸만단 2025. 1. 27. 20:34
반응형

screen이란?

screenGNU Screen이라는 이름의 터미널 다중화 프로그램,

하나의 터미널 세션에서 여러 개의 가상 터미널을 실행하고 관리할 수 있도록 해주는 도구.

주로 리눅스/유닉스 환경에서 사용

 

screen의 주요 기능

1. 세션 유지

SSH로 접속한 후 터미널이 끊기더라도 실행 중인 작업을 계속 유지할 수 있습니다.

예를 들어, 장시간 실행되는 작업(예: 데이터 처리, 서버 빌드)을 중단하지 않고 이어서 실행할 수 있습니다.

2. 멀티태스킹

한 화면에서 여러 터미널을 열고 작업을 동시에 수행할 수 있습니다.

화면 분할을 통해 여러 작업을 한 번에 모니터링할 수 있습니다.

3. 원격 접속 환경 지원

원격 서버에서 작업 중 연결이 끊기더라도 다시 연결하여 작업을 이어나갈 수 있습니다.

4. 공유

여러 사용자가 동일한 세션을 공유하여 협업하거나 디버깅 작업을 할 수 있습니다.

 

screen이 필요한 이유

1. 장시간 작업이 필요한 경우

원격 서버에서 실행 중인 프로그램이 네트워크 문제로 중단되지 않도록 보호합니다.

2. 다중 터미널 세션 관리

여러 작업을 하나의 세션에서 분리하여 관리할 수 있어 효율적입니다.

3. 세션 복원 기능

세션을 종료하지 않고 나중에 동일한 작업 환경으로 복원할 수 있습니다.


명령어 모음

  • screen -ls
    • 백그라운드에 있는 세션 리스트를 가져온다.
  • screen -S 세션명
    • 유저가 지정한 '세션명'으로 screen을 시작한다.
  • screen -r [세션ID]
    • 특정 세션에 접속
  • screen -R 세션명
    • 이미 존재하는 '세션명'을 포어그라운드로 들고와 작업을 진행한다.
  • screen -R 세션명 : 특정 세션만 detach
  • screen -D -R 세션명
    • 이전 세션이 attach 된 상태라면 detach 하고 세션을 복원한다.
  • screen -r -d
    • 세션 강제로 detach
  • screen -X 세션명
    • 동시에 여러 사용자가 한 화면을 공유하면서 작업을 진행한다.
  • screen -X -S 세션명 kill
    • 해당 '세션'을 삭제한다.
  • pkill screen : 모든 세션 한번에 종료
  • Ctrl + a + d
    • 스크린 attach이후 스크린을 detach하는 단축키
  • Ctrl + a + k
    • 스크린 attach이후 스크린을 종료하면서 빠져나옴
  • Ctrl + a + esc
    • 위 명령을 사용하면서 방향키를 사용하면 스크롤 가능
  • Ctrl + a + |
    • 세로로 화면 분할
  • Ctrl + a + ?
    • 키보드 단축키 보기

스크롤 제한?

screen은 기본적으로 터미널에서 여러 세션을 관리할 수 있도록 설계된 유틸리티로, 실행 중인 프로세스를 백그라운드로 유지하거나 여러 터미널 세션을 전환하면서 사용할 수 있습니다. 하지만 기본 설정에서는 터미널 내의 스크롤 기능이 제한될 수 있습니다.

 

스크롤 기능이 작동하지 않는 이유

1. 스크롤 버퍼 설정이 비활성화됨

screen은 기본적으로 자체 버퍼를 사용하지 않기 때문에 터미널 내에서 스크롤이 불가능합니다.

따라서 screen 내에서 실행되는 내용은 일반 터미널 스크롤 버퍼와는 독립적입니다.

2. 키보드 단축키 설정 부족

screen은 자체적으로 스크롤 기능을 제공하지만, 이를 활성화하려면 특정 단축키를 사용해야 합니다.

 

해결 방법

 

1. screen 내에서 스크롤 활성화

screen은 자체 스크롤 모드를 제공합니다.

Ctrl + A + Esc:

Ctrl + A를 누른 뒤 Esc를 눌러 스크롤 모드로 전환합니다.

이 상태에서 방향키를 사용하여 스크롤할 수 있습니다.

스크롤 모드에서 나가려면 q를 누릅니다.

 

2. 스크롤 버퍼 크기 늘리기

screen스크롤 버퍼 크기를 늘려 더 많은 기록을 저장할 수 있습니다.

~/.screenrc 파일을 열고 다음 설정을 추가하세요:

 

defscrollback 10000

 

여기서 10000은 저장할 라인 수를 의미합니다.

 

3. 터미널의 스크롤 기능 활용

screen 세션 외부에서 터미널의 스크롤을 사용하려면 screen 실행 시 | less 또는 | tee와 같은 명령으로 로그를 저장하거나 출력 내용을 파이프 처리하세요:

 

screen -L -Logfile output.log

 

이 명령으로 screen 세션의 모든 출력이 output.log 파일에 기록됩니다.

이후 로그를 열어 내용을 확인할 수 있습니다:

 

less output.log

 

 

 

4. 터미널 멀티플렉서 tmux 사용

tmuxscreen의 대안으로, 기본적으로 스크롤과 기록을 더 직관적으로 지원합니다.

Ctrl + b, [: 스크롤 모드로 전환.

 

추가 팁

 

screen터미널 세션 복구프로세스 백그라운드 실행에 초점을 맞춘 도구입니다. 스크롤이나 기록 관리를 더 편하게 하려면 tmux로 전환하거나 로그 파일을 사용하는 방식도 고려하세요.


참고 : https://blogbicha.tistory.com/23 [토마스의 기술 정리함:티스토리]

반응형