리눅스의 화면 명령을 사용하는 방법

0
1035
다른 터미널 세션이 겹쳐진 랩톱의 Linux 터미널.
fatmawati achmad zaenuri / Shutterstock

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

화면 명령이란 무엇입니까?

그만큼 screen command는 터미널 멀티플렉서이며 옵션으로 가득합니다. 많은 것을 할 수 있다고 말하는 것은 과소 진술의 할아버지입니다. 매뉴얼 페이지는 4,100 줄 이상으로 실행됩니다.

다음은 가장 일반적인 경우입니다. screen 이 기사에서 더 자세히 다루겠습니다.

  • 표준 작업은 쉘이 포함 된 새 창을 만들고 명령을 실행 한 다음 창을 배경 ( “분리”)으로 푸시하는 것입니다. 프로세스가 어떻게 진행되고 있는지 확인하려면 창을 다시 전경으로 끌어 당기고 (“재 부착”) 다시 사용할 수 있습니다. 터미널 창을 닫아 실수로 종료하고 싶지 않은 긴 프로세스에 유용합니다.
  • 일단 당신이 screen 세션 실행 중에 새 창을 만들고 다른 프로세스를 실행할 수 있습니다. 창 사이를 쉽게 이동하여 진행 상황을 모니터링 할 수 있습니다. 또한 터미널 창을 세로 또는 가로 영역으로 분할하고 다양한 screen 하나의 창에 창.
  • 원격 컴퓨터에 연결하여 screen 세션을 시작하고 프로세스를 시작하십시오. 원격 호스트에서 연결을 끊었다가 다시 연결해도 프로세스가 계속 실행됩니다.
  • 당신은 공유 할 수 있습니다 screen 서로 다른 두 SSH 연결 간의 세션을 통해 두 사람이 동일한 내용을 실시간으로 볼 수 있습니다.

설치 화면

설치하기 위해서 screen 우분투에서는 다음 명령을 사용하십시오.

sudo apt-get install screen

터미널 창에서 "sudo apt-get install screen"명령

설치하기 위해서 screen Manjaro에서 다음 명령을 사용하십시오.

sudo pacman -Sy screen

터미널 창에서 "sudo pacman -Sy screen"명령

Fedora에서 다음을 입력하십시오.

sudo dnf install screen

터미널 창에서 "sudo dnf install screen"명령

화면 시작하기

시작한다 screen아래에 표시된대로 입력하고 Enter를 누르십시오.

screen

터미널 창의 "screen"명령

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

터미널 창에서 "screen"명령 라이센스 정보

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

이렇게하려면 다음을 입력하십시오.

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

터미널 창에서 "curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> latest_kernel.zip"명령. ' width = "646"height = "77"onload = "pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);" onerror = "this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);"></p>
<p>다운로드가 시작되고 <code>curl</code> 출력은 진행 상황을 보여줍니다.</p>
<p><img decoding="async" class="alignnone wp-image-662707 size-full" src="https://www.howtogeek.com/wp-content/uploads/2020/03/5-2.png" alt=

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

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

창 이름의 시작 부분부터 다시 첨부하려면 숫자가 필요합니다. 잊어 버린 경우 언제든지 -ls 분리 된 창의 목록을 보려면 아래에 표시된대로 (목록) 옵션을 선택하십시오.

screen -ls

터미널 창에서 "screen -ls"명령

준비가되면 -r (다시 첨부) 옵션 및 다시 첨부 할 세션 수 :

screen -r 23167

터미널 창에서 "screen -3 23167"명령

백그라운드에서 사라져 버린 창은 이제 마치 떠나지 않은 것처럼 터미널 창으로 돌아갑니다.

다시 연결된 화면 세션이 터미널 창으로 복원되었습니다.

그것이 결론에 도달하는 프로세스라면 결국 완료 될 것입니다. 지속적인 프로세스라면 결국 종료하고 싶을 것입니다. 어느 쪽이든 프로세스가 끝나면 다음을 입력 할 수 있습니다. exit 에서 나가기 위해 screen. 또는 Ctrl + A를 누른 다음 K를 눌러 강제로 창을 종료 할 수 있습니다.

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

exit

터미널 창에서 "exit"명령

이전 터미널 창으로 돌아가서 창을 다시 연결하는 데 사용한 명령이 계속 표시됩니다. 하나의 창만 닫았 기 때문에 다음과 같은 메시지가 나타납니다. screen 종료 중입니다.

터미널 화면에서 "screen"명령 종료 메시지.

관련 : curl을 사용하여 Linux 명령 행에서 파일을 다운로드하는 방법

명명 된 화면 세션 사용

당신은 사용할 수 있습니다 -S (세션 이름) 옵션은 screen 세션. 세션의 숫자 ID가 아닌 기억에 남는 이름을 사용하면 세션에 다시 연결하는 것이 더 편리합니다. 세션 이름을 “bigfile”로 지정하려면 다음을 입력하십시오.

screen -S bigfile

터미널 창에서 "screen -S bigfile"명령

언제 screen 세션을 시작하면 명령 프롬프트가있는 빈 창이 나타납니다. 우리는 큰 파일을 다운로드 할 것이므로 예를 들어 오래 실행되는 프로세스를 사용할 수 있습니다.

우리는 다음을 입력합니다 :

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

터미널 창에서 "curl http://ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip"명령. ' width = "646"height = "77"onload = "pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);" onerror = "this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);"></p>
<p>다운로드가 시작되면 Ctrl + A를 누른 다음 D를 눌러 세션을 분리합니다. 우리는 다음을 사용하여 <code>-ls</code> (목록) 옵션 <code>screen</code> 분리 된 세션의 세부 사항을 보려면 :</p>
<pre>screen -ls</pre>
<p><img loading="lazy" decoding="async" class="alignnone wp-image-662816 size-full" src="https://www.howtogeek.com/wp-content/uploads/2020/03/15-2.png" alt=

숫자 식별자 (23266) 뒤에는 세션 이름 (큰 파일)이 있습니다. 세션 이름을 포함하여 다음을 입력하여 다시 연결합니다.

screen -r bigfile

터미널 창에서 "screen -r bigfile"명령

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

터미널 창에서 다시 연결된 화면 세션에서 컬 다운로드 출력.

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

여러 창에서 화면 사용

지금까지 우리는 screen 분리 된 창의 백그라운드에서 단일 프로세스를 배치합니다. 하나, screen 그것보다 훨씬 더 많은 일을 할 수 있습니다. 다음으로 몇 가지 프로세스를 실행하여 컴퓨터의 일부 측면을 모니터링 할 수 있습니다.

“monitor”라는 스크린 세션을 시작하려면 다음을 입력하십시오.

screen -S monitor

터미널 창에서 "screen -S monitor"명령

새 창 세션의 명령 프롬프트에서 시작합니다 dmesg 사용 -H (사람이 읽을 수있는) -w (새 메시지를 기다리는 중) 옵션. 커널 버퍼 메시지가 표시됩니다. 새로운 메시지가 발생할 때 나타납니다.

우리는 다음을 입력합니다 :

dmesg -H -w

터미널 창에서 "dmesg -H -w"명령

기존 메시지가 나타납니다. 명령 프롬프트로 돌아 가지 않습니다. dmseg 새 메시지를 기다리는 중이며 도착하면 표시됩니다.

터미널 창에서 "dmsesg"출력

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

다른 응용 프로그램을 실행하고 싶기 때문에 새로운 응용 프로그램이 필요합니다 screen 창문. Ctrl + A를 누른 다음 C를 눌러 새 창을 만듭니다. 우리는 사용할 것입니다 watch 반복적으로 실행 vmstat따라서 컴퓨터에서 가상 메모리 사용량을 자주 업데이트합니다.

새 명령 프롬프트에서 다음을 입력하십시오.

watch vmstat

터미널 창의 "watch vmstat"명령

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

터미널 창의 "vmstat"출력.

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

터미널 창의 "dmesg"화면으로 돌아갑니다.

Ctrl + A와 1을 누르면 다시 vmstat 창문.

터미널 창의 "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, 탭: 낮은 지역으로 이동하십시오.
  • Ctrl + A, 0 : 하단 영역에 창 0을 표시합니다.

한 걸음 더 나아갈 수 있습니다. 이제 아래쪽 창을 세로로 나누고 세 번째 프로세스를 디스플레이에 추가합니다. 아래쪽 영역에 커서를 놓고 Ctrl + A 및 C를 눌러 쉘이있는 새 창을 만듭니다. 아래쪽 영역에는 새 창이 표시되고 명령 프롬프트가 표시됩니다.

터미널 창의 아래쪽 영역에 새 창을 표시하는 수평 분할 창이있는 "스크린"세션.

다음으로 df 파일 시스템 사용을 확인하는 명령 :

df

수평 분할 창이있는 "스크린"세션 및 터미널 창의 아래쪽 영역에 "df"입력

우리가 볼 때 df 실행, 우리는 Ctrl + A 및 파이프 문자를 누르십시오 (|). 이것은 아래쪽 영역을 세로로 분할합니다. Ctrl + A와 Tab을 눌러 새 지역으로 이동합니다. 다음으로 Ctrl + A와 0을 눌러 dmesg 창문.

터미널 창에 3 개의 창을 보여주는 "스크린"세션.

영역 간을 이동하고 더 많은 수직 또는 수평 분할을 추가 할 수도 있습니다. 더 유용한 키 조합은 다음과 같습니다.

  • Ctrl + A : 현재 지역과 이전 지역 사이를 오 가십시오.
  • Ctrl + A, Q : 현재 지역을 제외한 모든 지역을 닫습니다.
  • Ctrl + A, X : 현재 지역을 닫습니다.

SSH를 통한 화면 사용

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

컴퓨터와 다른 컴퓨터에서 SSH로 연결해 보겠습니다. ssh 명령. 연결할 계정 이름과 원격 컴퓨터 주소를 제공해야합니다.

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

ssh dave@192.168.4.30

터미널 창에서 "ssh dave@192.168.4.30"명령

원격 컴퓨터에서 인증하고 로그인 한 후 다음을 입력하여 screen “ssh-geek”이라는 세션 :

screen -S ssh-geek

터미널 창에서 "screen -S ssh-geek"명령

데모 목적으로 top 에서 screen 창을 열 수 있지만 장기 또는 무한 프로세스를 시작할 수 있습니다.

우리는 다음을 입력합니다 :

top

터미널 창의 "top"명령

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

터미널 창의 "화면"창에서 실행되는 "맨 위"프로세스

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

사용자가 원래 터미널 창으로 돌아옴

입력하면 exit아래에 표시된 것처럼 SSH 세션 연결이 끊어지고 로컬 컴퓨터로 돌아갑니다.

exit

터미널 창에서 "exit"명령

다시 연결하려면 다음을 입력하십시오.

ssh dave@192.168.4.30

터미널 창에서 "ssh dave@192.168.4.30"명령

다시 연결하고 로그인 한 후 다음을 입력하여 screen 세션:

screen -r ssh-geek

터미널 창에서 "screen -r ssh-geek"명령

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

터미널 창에서 실행중인 "최상위"프로세스

한 시스템에서 프로세스를 시작한 다음 다른 시스템에서 중단 한 곳을 선택하려는 경우에 유용합니다.

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

화면 공유

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

그는 다음을 입력합니다.

ssh dave@192.168.4.30

터미널 창에서 "ssh dave@192.168.4.30"명령

연결되면 -S (세션 이름) 옵션을 사용하여“ssh-geek”이라는 스크린 세션을 시작합니다. 그는 또한 -d (분리) -m (강제 생성) 옵션으로 새로운 생성 screen 이미 분리 된 세션.

그는 다음을 입력합니다.

screen -d -m -S ssh-geek

터미널 창에서 "screen -d -m -S ssh-geek"명령

그는 다음을 사용하여 다음을 입력합니다. -X (멀티 스크린 모드) 옵션 세션 연결 :

screen -X ssh-geek

터미널 창에서 "screen -X ssh-geek"명령

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

ssh dave@192.168.4.1

터미널 창에서 "ssh dave@192.168.4.1"명령

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

screen -X ssh-geek

터미널 창에서 "screen -X ssh-geek"명령

이제, 어떤 사람이 입력하면 다른 사람이 볼 수 있습니다. 예를 들어, 한 사람이 날짜 명령을 발행하면 입력 한 내용과 출력 내용을 모두 볼 수 있습니다.

터미널 창의 "date"명령

터미널 창에서 "date"명령의 출력

두 사람은 이제 screen 원격 우분투 컴퓨터에서 실행되는 세션.


1987 년에 처음으로 빛을 본 소프트웨어 screen 여전히 좋은 생산성을 보여줍니다. 익숙해 지려면 시간이 많이 걸립니다!

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