screen이란?
screen은 GNU 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 사용
• tmux는 screen의 대안으로, 기본적으로 스크롤과 기록을 더 직관적으로 지원합니다.
• Ctrl + b, [: 스크롤 모드로 전환.
추가 팁
screen은 터미널 세션 복구와 프로세스 백그라운드 실행에 초점을 맞춘 도구입니다. 스크롤이나 기록 관리를 더 편하게 하려면 tmux로 전환하거나 로그 파일을 사용하는 방식도 고려하세요.
참고 : https://blogbicha.tistory.com/23 [토마스의 기술 정리함:티스토리]