Linux의 화면 명령 사용 방법

Linux screen명령을 사용하면 실행중인 터미널 애플리케이션을 백그라운드로 푸시하고보고 싶을 때 앞으로 당길 수 있습니다. 또한 분할 화면 디스플레이를 지원하고 연결을 끊었다가 다시 연결 한 후에도 SSH 연결을 통해 작동합니다!

화면 명령은 무엇입니까?

screen명령은 터미널 멀티플렉서이며 절대적으로 옵션으로 가득 차 있습니다. 많은 것을 할 수 있다고 말하는 것은 과소 표현의 할아버지입니다. 매뉴얼 페이지는 4,100 줄이 넘습니다.

다음은 screen명령을 사용하는 가장 일반적인 경우이며이 문서에서 더 자세히 다룰 것입니다.

  • 표준 작업은 셸이 포함 된 새 창을 만들고 명령을 실행 한 다음 창을 백그라운드로 푸시하는 것입니다 ( "분리"라고 함). 프로세스가 어떻게 진행되고 있는지 확인하려면 창을 다시 전경으로 끌어 와서 ( "재 연결") 다시 사용할 수 있습니다. 이것은 터미널 창을 닫아 실수로 종료하지 않으려는 긴 프로세스에 유용합니다.
  • 당신이있어 일단 screen세션 실행, 당신은 새 창을 생성하고 다른 프로세스를 실행할 수 있습니다. 창 사이를 쉽게 이동하여 진행 상황을 모니터링 할 수 있습니다. 또한 터미널 창을 수직 또는 수평 영역으로 분할하고 다양한 screen창을 하나의 창에 표시 할 수 있습니다.
  • 원격 시스템에 연결하고 screen세션을 시작하고 프로세스를 시작할 수 있습니다. 원격 호스트에서 연결을 끊고 다시 연결할 수 있으며 프로세스는 계속 실행됩니다.
  • screen서로 다른 두 SSH 연결간에 세션을 공유하여 두 사람이 실시간으로 동일한 것을 볼 수 있습니다.

화면 설치

screen우분투에 설치하려면 다음 명령을 사용하십시오.

sudo apt-get 설치 화면

screenManjaro에 설치하려면  다음 명령을 사용하십시오.

sudo pacman -Sy 화면

Fedora에서 다음을 입력합니다.

sudo dnf 설치 화면

화면 시작하기

시작하려면 screen아래 표시된대로 입력하고 Enter 키를 누르십시오.

화면

라이선스 정보 페이지가 표시됩니다. 스페이스 바를 눌러 두 번째 페이지를 읽거나 Enter 키를 눌러 명령 프롬프트로 돌아갈 수 있습니다.

명령 프롬프트에 남아 있으며 아무 일도 일어나지 않은 것 같습니다. 그러나 이제 다중 터미널 에뮬레이터 내에서 셸을 실행하고 있습니다. 이것이 좋은 이유는 무엇입니까? 완료하는 데 시간이 오래 걸리는 프로세스를 시작하겠습니다. 최신 Linux 커널의 소스 코드를 다운로드하여 latest_kernel.zip.

이를 위해 다음을 입력합니다.

curl //cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> latest_kernel.zip

다운로드가 시작되고 curl출력에 진행 상황이 표시됩니다.

다음 비트의 이미지는 키 입력 시퀀스이기 때문에 표시 할 수 없습니다. Ctrl + A를 입력하고 해당 키를 놓은 다음 d를 눌러 화면을 분리합니다.

다운로드 프로세스는 여전히 실행 중이지만 다운로드를 표시하는 창이 제거됩니다. screen 세션 을 시작한 터미널 창으로 돌아갑니다 . screen레이블 23167.pts-0.howtogeek이 지정된 창이 분리되었음을 알리는 메시지가 표시 됩니다.

다시 연결하려면 창 이름의 시작 부분에있는 번호가 필요합니다. 잊어 버린 경우 -ls아래 그림과 같이 항상 (list) 옵션을 사용하여 분리 된 창 목록을 가져올 수 있습니다.

screen -ls

준비가되면 다음 -r과 같이 (재 연결) 옵션과 세션 번호를 사용하여 다시 연결할 수 있습니다 .

화면 -r 23167

백그라운드에서 작동하던 창은 이제 마치 한 번도 떠나지 않은 것처럼 터미널 창으로 다시 돌아옵니다.

결론에 도달 할 프로세스라면 결국 완료 될 것입니다. 연속적인 프로세스라면 결국 종료하는 것이 좋습니다. 어느 쪽이든 프로세스가 종료되면 입력  exit 하여 screen. 또는 Ctrl + A를 누른 다음 K를 눌러 창을 강제로 종료 할 수 있습니다.

다음 명령을 입력하십시오.

출구

이전 터미널 창으로 돌아 가면 창을 다시 연결하는 데 사용한 명령이 계속 표시됩니다. 분리 된 유일한 창을 닫았 기 때문에 screen종료 되는 메시지 가 표시됩니다.

관련 : Linux 명령 줄에서 파일을 다운로드하기 위해 curl을 사용하는 방법

명명 된 화면 세션 사용

-S(세션 이름) 옵션을 사용하여 세션 이름을 지정할 수 있습니다 screen. 세션의 숫자 ID 대신 기억에 남는 이름을 사용하는 경우 세션에 다시 연결하는 것이 더 편리합니다. 다음을 입력하여 세션 이름을 "bigfile"로 지정합니다.

화면 -S bigfile

screen출시 우리의 세션, 우리는 프롬프트 명령을 빈 창을 참조하십시오. 큰 파일을 다운로드 할 것이므로 장기 실행 프로세스를 예로 사용할 수 있습니다.

다음을 입력합니다.

curl //ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip

다운로드가 시작되면 Ctrl + A를 누른 다음 D를 눌러 세션을 분리합니다. -ls(list) 옵션 을 사용하여 screen분리 된 세션의 세부 정보를 보려면 다음을 입력합니다 .

screen -ls

숫자 식별자 (23266) 뒤에 세션 이름 (bigfile)이 표시됩니다. 세션 이름을 포함하여 다음을 입력하여 다시 연결합니다.

screen -r bigfile

다운로드 창에 다시 연결되었으며 긴 다운로드가 아직 진행중인 것을 확인했습니다.

다운로드가 완료되면 입력 exit하여 세션 창을 닫습니다.

여러 창에서 화면 사용

지금까지 screen분리 된 창에서 백그라운드에 단일 프로세스를 배치했습니다. 그러나  screen그 이상을 할 수 있습니다. 다음으로 컴퓨터의 일부 측면을 모니터링 할 수있는 몇 가지 프로세스를 실행합니다.

다음을 입력하여 "모니터"라는 화면 세션을 시작합니다.

화면 -S 모니터

새 창 세션의 명령 프롬프트에서 (사람이 읽을 수있는) 및 (새 메시지 대기) 옵션을 시작 dmesg 하고 사용합니다 . 그러면 커널 버퍼 메시지가 표시됩니다. 새 메시지가 발생하면 나타납니다.-H-w

다음을 입력합니다.

dmesg -H -w

기존 메시지가 나타납니다. 이 (가) dmseg새 메시지를 기다리고 있기 때문에 명령 프롬프트로 돌아 가지 않고 메시지가 도착하면 표시합니다.

관련 : Linux에서 dmesg 명령을 사용하는 방법

다른 응용 프로그램을 실행하려고하므로 새 screen 창이 필요합니다 . Ctrl + A를 누른 다음 C를 눌러 새 창을 만듭니다. 을 ( watch를) 반복적으로 실행하는 데 사용할 vmstat것이므로 컴퓨터의 가상 메모리 사용량에 대한 자주 업데이트 된 표시를 얻습니다.

새 명령 프롬프트에서 다음을 입력합니다.

vmstat보기

vmstat출력이 나타나고 2 초마다 업데이트됩니다.

이제 두 프로세스가 실행 중입니다. screen창 사이를 이동하려면  Ctrl + A와 창 번호를 누릅니다. 우리가 만든 첫 번째는 창 0 (0)이고 다음은 창 1입니다. 첫 번째 창 ( dmesg하나)으로 이동하려면 Ctrl + A와 0을 누릅니다.

Ctrl + A와 1을 누르면 vmstat창으로 돌아갑니다 .

꽤 멋져요! Ctrl + A를 누른 다음 D를 눌러이 세션에서 분리 할 수 ​​있습니다. 나중에 다시 연결할 수 있습니다. 두 세션 모두 계속 실행됩니다. 다시, 창 사이를 전환하려면 Ctrl + A와 전환하려는 창의 번호 (0 또는 1)를 누릅니다.

다음 단계로 이동하여 한 창에서 두 화면을 모두 보겠습니다. 이렇게하면 터미널 창을이 단계를 유용하게 만드는 크기로 늘립니다. 예제는 스크린 샷의 크기로 제한되어 있으므로 창이 약간 비좁아 보입니다.

이를 위해 Ctrl + A를 누른 다음 Shift + S를 누릅니다 (대문자 "S"가 필요함).

창은 두 개의 "영역"으로 분할됩니다.

상단 영역은 계속 표시 vmstat되고 하단 영역은 비어 있습니다. 커서는 아래 스크린 샷에서 강조 표시됩니다. 아래쪽 영역으로 이동하려면 Ctrl + A를 누른 다음 Tab을 누릅니다.

커서는 실제로는 빈 공간 인 아래쪽 영역으로 이동합니다. 쉘이 아니므로 아무것도 입력 할 수 없습니다. 유용한 디스플레이를 얻으려면 Ctrl + A를 누른 다음 "0"을 눌러이 dmesg영역에 창 을 표시합니다 .

이것은 하나의 분할 창에서 두 라이브 출력을 제공합니다. Ctrl + A와 D를 눌러 창을 분리했다가 다시 연결하면 분할 창보기가 사라집니다. 그러나 다음 키보드 단축키를 사용하여 복원 할 수 있습니다.

  • Ctrl + A, S : 창을 가로로 분할합니다.
  • Ctrl + A , Tab : 하단 영역으로 이동합니다.
  • Ctrl + A, 0 : 하단 영역에 창 0을 표시합니다.

우리는 한 걸음 더 나아갈 수 있습니다. 이제 하단 창을 수직으로 분할하고 디스플레이에 세 번째 프로세스를 추가합니다. 아래쪽 영역에 커서를두고 Ctrl + A와 C를 눌러 쉘이있는 새 창을 만듭니다. 하단 영역은 새 창을 표시하고 명령 프롬프트를 제공합니다.

다음으로 df명령을 실행하여 파일 시스템 사용량을 확인합니다.

df

df실행중인 것을 볼 때 Ctrl + A와 파이프 문자를 누릅니다 (|). 이것은 아래쪽 영역을 수직으로 분할합니다. Ctrl + A와 Tab을 눌러 새 영역으로 이동합니다. 다음으로 Ctrl + A와 0을 눌러 dmesg창 을 표시합니다 .

영역에서 영역으로 이동하고 더 많은 수직 또는 수평 분할을 추가 할 수도 있습니다. 다음은 몇 가지 유용한 키 조합입니다.

  • Ctrl + A : 현재 지역과 이전 지역 사이를 앞뒤로 이동합니다.
  • Ctrl + A, Q : 현재 영역을 제외한 모든 영역을 닫습니다.
  • Ctrl + A, X : 현재 영역을 닫습니다.

SSH를 통해 화면 사용

을 사용하면 screen창 세션을 시작하고, 백그라운드에서 계속 실행되도록 분리하고, 로그 오프하거나 다시 로그인 한 다음 세션을 다시 연결할 수 있습니다.

ssh 명령 을 사용하여 다른 컴퓨터에서 SSH 연결을 만들어 보겠습니다  . 연결할 계정의 이름과 원격 컴퓨터의 주소를 제공해야합니다.

이 예에서는 다음을 입력합니다.

ssh [email protected]

원격 컴퓨터에서 인증하고 로그인 한 후 다음을 입력하여 screen"ssh-geek"라는 세션 을 시작합니다 .

화면 -S ssh-geek

데모 목적으로 창 top 에서 실행  screen되지만 장기 실행 또는 끝없는 프로세스를 시작할 수 있습니다.

다음을 입력합니다.

상단

top창에서가 실행 되면  Ctrl + A를 누른 다음 D를 눌러 창을 분리합니다.

원래 원격 터미널 창으로 돌아갑니다.

exit아래와 같이 입력 하면 SSH 세션 연결이 끊어지고 로컬 컴퓨터로 돌아갑니다.

출구

다시 연결하려면 다음을 입력합니다.

ssh [email protected]

다시 연결하고 로그인 한 후 다음을 입력하여 screen세션 을 다시 연결할 수 있습니다 .

화면 -r ssh-geek

이제 여전히 실행중인의 인스턴스에 다시 연결되었습니다 top.

한 컴퓨터에서 프로세스를 시작한 다음 다른 컴퓨터에서 중단 한 부분부터 다시 시작하려는 경우 유용합니다.

관련 : Linux 셸에서 SSH 키를 만들고 설치하는 방법

스크린 세션 공유

screen세션을 사용하여 두 사람이 동일한 창을보고 상호 작용할 수 있습니다. 컴퓨터에서 Fedora를 실행하는 누군가가 Ubuntu 서버에 연결하려고한다고 가정 해 보겠습니다.

그는 다음을 입력합니다.

ssh [email protected]

연결되면 -S (세션 이름) 옵션을 사용하여 "ssh-geek"라는 화면 세션을 시작합니다. 또한 -d(분리) 및  -m(강제 생성) 옵션을 사용하여 screen이미 분리 된 새 세션 을 만듭니다 .

그는 다음을 입력합니다.

화면 -d -m -S ssh-geek

그는 유형은 다음을의 사용 -X세션을 연결하는 옵션을 (멀티 스크린 모드) :

화면 -X ssh-geek

Manjaro 컴퓨터에서 다른 사람이 아래와 같이 동일한 계정 자격 증명을 사용하여 Ubuntu 컴퓨터에 연결합니다.

ssh [email protected]

연결되면 다음 screen과 같이  명령을 입력하고 -X (멀티 스크린 모드) 옵션을 사용하여 동일한 창 세션에 참가합니다.

화면 -X ssh-geek

이제 두 사람 모두 입력하면 다른 사람이 볼 수 있습니다. 예를 들어 한 사람이 date 명령을 실행하면 두 사람 모두 입력 된대로 출력과 함께 해당 명령을 볼 수 있습니다.

두 사람은 이제 screen원격 Ubuntu 컴퓨터에서 실행 되는 세션을 공유하고 있습니다.

1987 년에 처음으로 빛을 본 소프트웨어의 경우 screen 여전히 생산성이 우수합니다. 그것에 익숙해지면 시간이 많이 걸릴 것입니다!

관련 : 알아야 할 37 가지 중요한 Linux 명령