Computer >> 컴퓨터 >  >> 시스템 >> Linux

Linux 터미널에서 screen으로 멀티태스킹하는 방법

Linux 터미널에서 screen으로 멀티태스킹하는 방법

많은 사람들이 screen이라는 훌륭한 도구를 모르고 있습니다. 전문 용어로는 '터미널 멀티플렉서(terminal multiplexer)'라고 불리는 이 작지만 강력한 도구는, 터미널을 사용하는 모든 사용자의 무기고에 반드시 있어야 할 필수품입니다. 그만큼 유용한 도구입니다.

screen을 사용하면 터미널에서의 멀티태스킹이 아주 쉬워집니다. 여러 도구를 각각의 세션에서 동시에 실행할 수 있고, 어떤 작업을 자체 'screen' 세션에서 실행한 후에는 언제든지 분리(detach)했다가 다시 연결(re-attach)할 수 있습니다. 분리된 세션에서 작업이 계속 실행되므로 여러 도구 사이를 자유롭게 오갈 수 있습니다.

매일 터미널에서 여러 작업을 동시에 처리해야 한다면, 이미 screen을 사용하고 있거나, 한 번만 써보면 그 편리함에 푹 빠지게 될 것입니다!

screen 설치하기

screen은 오래되고 검증된 도구라서 거의 모든 리눅스 배포판에서 사용할 수 있습니다. Debian, Ubuntu, Mint 등 apt를 사용하는 배포판에서는 다음 명령어로 설치할 수 있습니다:

sudo apt install screen

용량이 작고 의존성도 많지 않아서 몇 초 만에 설치가 완료되고 바로 사용할 수 있습니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

첫 번째 세션 시작하기

여기서는 screen의 기본 기능만 다룹니다. 이 정도만 알아도 바로 사용할 수 있기 때문입니다. 이 글을 읽고 더 깊이 알아보고 싶어진다면 매뉴얼 페이지에서 추가 기능들을 확인할 수 있습니다.

사용법은 간단합니다. 터미널에 입력하려던 명령어 앞에 screen을 붙이기만 하면 됩니다. 예시로 인기 있는 nano 에디터로 문서를 만들어 보겠습니다. nano가 설치되어 있지 않거나 다른 에디터를 선호한다면 원하는 에디터로 바꿔 입력하세요.

screen nano mte_screen.txt

평소 명령어 앞에 'screen'을 붙였더니, 해당 명령이 screen의 세션 중 하나에서 실행됩니다. 겉으로는 달라진 게 없어 보일 수 있지만, 다음 단계에서 그 차이를 확인하게 됩니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

세션에서 분리하기

nano에 내용을 입력한 후, 키보드로 Ctrl+A를 누른 다음 D를 누르세요. 그러면 nano(또는 사용 중이던 에디터)가 화면에서 사라지고, 터미널에는 다음과 같은 메시지가 표시됩니다:

[detached from terminal-ID]

이제 screen을 실행하기 전의 원래 터미널로 돌아온 것입니다. 하지만 nano가 실행 중이던 세션은 그대로 살아 있습니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

실행 중인 세션으로 돌아가기

세션이 백그라운드에서 실행 중이므로, 다음 명령어로 다시 돌아갈 수 있습니다:

screen -r

Enter를 누르면 nano에서 마지막으로 작업하던 지점으로 바로 복귀합니다. 이렇게 분리와 재연결은 원하는 만큼 반복할 수 있습니다. 하지만 아직 백그라운드에서 하나의 앱만 실행 중일 뿐, 진정한 멀티태스킹과는 거리가 멉니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

두 번째 세션 만들기

원래 터미널로 돌아와 nano 세션에서 분리된 상태에서, 첫 번째 단계를 반복해 두 번째 세션에서 다른 작업을 실행해 보겠습니다. 간단하게 두 번째 문서를 nano로 만들어 보겠습니다:

screen nano mte_2nd.txt

screen은 같은 앱의 여러 세션만 실행할 수 있는 것이 아니라 어떤 프로그램이든 실행할 수 있습니다. 예를 들어 7z로 여러 파일을 압축하는 것처럼 시간이 오래 걸리는 작업에 screen을 활용하면 그 진가를 발휘합니다. 7z가 끝나기를 터미널 앞에서 기다릴 필요 없이, 세션을 분리해서 백그라운드에서 계속 실행하게 두면 됩니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

세션 목록 확인하기

앞선 단계를 따라 했다면 현재 두 개의 세션이 실행 중일 것입니다. 이 상태에서는 screen -r이 이전처럼 작동하지 않습니다. 어느 세션에 연결해야 할지 알 수 없기 때문입니다. 여러 세션이 있을 때 특정 세션으로 돌아가려면 먼저 해당 세션의 ID를 알아야 합니다. 다음 명령어로 확인할 수 있습니다:

screen -list

screen이 사용 가능한 모든 세션의 목록을 보여줍니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

예를 들어 스크린샷의 경우처럼, 특정 세션으로 돌아가려면 다음과 같이 입력합니다:

screen -r 14384

또는

screen -r 14336

알아두면 유용한 팁

screen으로 실행한 작업이 완료되어 종료되면, 해당 screen 세션도 함께 종료됩니다. 그래서 screen으로 작업을 실행했는데 현재 활성 세션이 표시되지 않는 경우가 있습니다. 작업이 이미 완료되어 세션이 닫힌 것입니다.

이런 경우에도 세션을 유지하고 싶다면, 명령어 앞에 screen을 붙이는 대신 'screen'만 단독으로 실행해 새 세션을 만든 다음, 그 안에서 명령어를 입력하고 분리하세요. 직접 만든 세션에서 명령을 실행하면 작업이 끝나도 세션이 종료되지 않습니다.

또한 screen은 기존 세션 안에서 새 세션을 만들 수도 있습니다. Ctrl+A를 누른 후 C를 누르면 새 화면이 생성되고 바로 그 화면으로 이동합니다.

자주 쓰게 될 다른 유용한 단축키도 있습니다. Ctrl+A를 누른 후:

  • A: 세션 제목을 입력해 식별과 관리를 쉽게 합니다
  • K: 현재 세션을 종료합니다
  • N 또는 P: 다음 또는 이전 활성 세션으로 이동합니다
  • 0~9: 처음 10개의 활성 세션 사이를 이동합니다

단순 멀티태스킹 그 이상

마지막으로 가장 강력한 기능을 소개합니다. screen은 특정 터미널에 묶여 있지 않습니다. 세션에서 분리한 후에는 GUI 환경이라면 터미널 창을 닫거나, 심지어 로그아웃해도 됩니다. 컴퓨터가 켜져 있는 한 세션은 계속 활성 상태로 유지됩니다.

Linux 터미널에서 screen으로 멀티태스킹하는 방법

즉, 다른 터미널에서 실행 중인 세션에 다시 연결할 수 있습니다. 스크린샷에서 볼 수 있듯이, Mint 기본 터미널에서 만든 세션에 Guake 터미널로 재연결했습니다.

이것이 의미하는 바가 잘 와닿지 않는다면 다음 시나리오를 생각해 보세요. SSH로 원격 컴퓨터에 로그인한 후 screen으로 작업을 시작합니다. 그런 다음 세션을 분리하고 로그오프합니다. 작업은 완료되거나, 다시 로그인해 세션에 재연결해 직접 종료할 때까지 계속 실행됩니다!

이 정도면 진정한 '멀티태스킹' 아니겠습니까?