혹시 이런 경험, 없으신가요?
몇 시간짜리 데이터 분석 스크립트를 돌리거나, 용량 큰 파일을 서버로 옮기고 있는데 갑자기 노트북 와이파이가 툭 끊어집니다. 설마 하는 마음에 다시 접속해보니 터미널 연결이 끊기면서 실행하던 모든 작업이 날아갔죠.
이럴 때 ‘아, 그냥 회사에서 하고 올걸…’ 하는 후회가 밀려오는데요. 이런 끔찍한 상황을 막아주는 아주 고맙고 오래된 친구가 있습니다. 바로 리눅스 `screen` 명령어입니다.
그래서 screen이 도대체 뭔가요?
가장 쉽게 비유하자면, ‘가상의 터미널’ 혹은 ‘업무용 멀티탭’이라고 생각하면 편해요. 우리가 터미널에 접속해서 명령어를 입력하는 창 있죠? screen은 그 창을 여러 개 복제해서 백그라운드에 계속 켜둘 수 있게 해줍니다.
그래서 내 컴퓨터가 꺼지든, 인터넷 연결이 끊기든, 리눅스 서버 안에서는 마치 아무 일 없었다는 듯이 묵묵히 제 할 일을 계속하는 거죠. 1987년에 처음 등장했으니 정말 오래됐지만, 여전히 현역에서 가장 사랑받는 도구 중 하나입니다.
지금 당장 써먹는 screen 핵심 사용법 4단계
복잡한 기능도 많지만, 딱 4가지만 알면 오늘부터 바로 ‘칼퇴’가 가능해집니다. 아래 순서대로 따라 해보세요.
1. 새 세션 시작하기: 작업 공간 만들기
새로운 가상 터미널을 만드는 단계입니다. 그냥 `screen`이라고만 쳐도 되지만, 나중에 여러 작업을 관리하려면 이름을 붙여주는 게 훨씬 편해요.
screen -S my_work
이렇게 하면 ‘my_work’라는 이름의 새로운 screen 세션이 열리고, 평소처럼 명령어를 입력하면 됩니다.
2. 세션에서 빠져나오기 (Detach): 마법의 시작
작업을 걸어놓고 잠시 빠져나올 시간입니다. 이게 바로 screen의 핵심이죠. 터미널을 그냥 끄면 안 되고, 아래 단축키를 순서대로 눌러주세요.
Ctrl + a 를 누른 후, 손을 떼고 바로 d 키를 누릅니다.
이걸 ‘세션을 분리(Detach)한다’고 표현해요. 화면은 원래의 터미널로 돌아오지만, ‘my_work’ 세션은 서버 어딘가에서 조용히 계속 돌아가고 있습니다.
3. 다시 접속하기 (Reattach): 내 작업 확인하기
몇 시간 뒤, 혹은 다음 날 아침에 작업이 잘 끝났는지 확인해 볼까요? 먼저 현재 실행 중인 세션 목록을 봅니다.
screen -ls
그럼 ‘my_work’ 세션이 보일 거예요. 이제 그 세션으로 다시 들어가 봅시다.
screen -r my_work
짜잔! 아까 실행시켜 뒀던 작업 화면이 그대로 나타납니다. 정말 신기하죠?
4. 세션 완전히 종료하기: 깔끔한 마무리
모든 작업이 끝나서 더 이상 세션이 필요 없다면, 해당 세션에 접속한 상태에서 간단하게 `exit` 명령어를 입력하면 됩니다. 그럼 세션이 완전히 종료되고 목록에서도 사라져요.
요즘 대세 tmux와 비교하면 어때요?
요즘에는 `screen`보다 더 세련된 기능(예: 화면 수직/수평 분할)을 제공하는 `tmux`를 쓰는 분들도 많아졌어요. 둘의 차이는 뭘까요?
| 구분 | screen | tmux |
|---|---|---|
| 출시 연도 | 1987년 | 2007년 |
| 핵심 특징 | 가볍고 단순함, 대부분의 시스템에 기본 설치 | 화면 분할, 창 관리, 스크립팅 등 고급 기능 풍부 |
| 추천 대상 | 입문자, 터미널 연결 유지 목적이 전부일 때 | 파워 유저, 복잡한 멀티태스킹 환경이 필요할 때 |
결론적으로, 터미널 연결이 끊겨도 작업을 유지하는 기본 기능에 충실하고 싶다면 `screen`만으로도 충분하고 넘칩니다.
이제 SSH 끊겨도 걱정 끝!
이제 `screen` 명령어로 여러분의 소중한 작업을 지키고, 마음 편히 노트북을 덮으세요. 지금 바로 터미널을 열고 `screen -S test` 를 입력하며 첫 세션을 시작해보는 건 어떨까요?
자주 묻는 질문 (FAQ)
`screen` 세션 안에서 스크롤은 어떻게 하나요?
세션에 접속된 상태에서 `Ctrl + a`를 누른 뒤 `[` 키를 누르면 ‘Copy 모드’로 진입합니다. 이때부터 위/아래 화살표 키나 Page Up/Down 키로 스크롤할 수 있어요. 빠져나올 땐 `Esc` 키를 누르면 됩니다.
‘There is no screen to be resumed.’ 메시지가 떠요.
이 메시지는 현재 백그라운드에서 실행 중인(detached) screen 세션이 없다는 뜻입니다. `screen -ls` 명령어로 목록을 확인했을 때 ‘No Sockets found’라고 나온다면 모든 세션이 `exit`로 정상 종료되었거나, 처음부터 생성되지 않은 상태입니다.

