웹사이트 검색

Ubuntu 클라우드 서버에서 Screen을 설치하고 사용하는 방법


소개

Screen은 하나의 창에서 여러 터미널 세션을 사용할 수 있게 해주는 콘솔 응용 프로그램입니다. 이 프로그램은 셸 세션 내에서 작동하며 창 관리자가 창을 관리하는 방식과 유사하게 다른 터미널 세션의 컨테이너 및 관리자 역할을 합니다.

여러 터미널 창을 만드는 것이 불가능하거나 이상적이지 않은 상황이 많이 있습니다. X 서버를 실행하지 않고 여러 콘솔 세션을 관리해야 할 수도 있고, 많은 원격 클라우드 서버에 액세스해야 할 수도 있으며, 다른 작업을 수행하는 동안 실행 중인 프로그램의 출력을 모니터링해야 할 수도 있습니다.

tmux와 같이 이 문제에 대한 현대적인 올인원 솔루션이 있지만 screen은 그 중에서 가장 완성도가 높으며 고유한 강력한 구문과 기능을 가지고 있습니다.

1단계 – 화면 설치

이 튜토리얼에서는 Ubuntu 22.04를 사용하지만 설치 프로세스 외에는 모든 최신 Linux 배포판에서 모든 것이 동일해야 합니다.

Screen은 Ubuntu에 기본적으로 설치되는 경우가 많습니다. apt를 사용하여 패키지 소스를 업데이트하고 screen을 설치할 수도 있습니다.

  1. sudo apt update
  2. sudo apt install screen

which screen을 실행하여 screen이 설치되었는지 확인합니다.

  1. which screen
Output
/usr/bin/screen

다음 단계에서 screen 사용을 시작할 수 있습니다.

2단계 – 화면 사용

새 screen 세션을 시작하려면 screen 명령을 실행합니다.

  1. screen
[secondary_label Output
GNU Screen version 4.09.00 (GNU) 30-Jan-22

Copyright (c) 2018-2020 Alexander Naumov, Amadeusz Slawinski
Copyright (c) 2015-2017 Juergen Weigert, Alexander Naumov, Amadeusz Slawinski
Copyright (c) 2010-2014 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008-2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib
Chowdhury
Copyright (c) 1993-2007 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
…
                  [Press Space for next page; Return to end.]

프로그램을 시작하면 라이선스 페이지가 표시됩니다. 계속하려면 Enter 키를 누르십시오.

다음에 일어날 일은 놀라운 일이 될 수 있습니다. 정상적인 명령 프롬프트가 표시되고 아무 일도 일어나지 않은 것처럼 보입니다. screen이 제대로 실행되지 않았습니까? 빠른 키보드 단축키를 사용하여 알아봅시다. Ctrl+a를 누른 다음 v를 누릅니다.

Output
screen 4.09.00 (GNU) 30-Jan-22

방금 화면에서 버전 정보를 요청했으며 화면이 올바르게 실행되고 있는지 확인할 수 있는 몇 가지 피드백을 받았습니다.

이제 화면을 제어하는 방법을 소개할 좋은 시간입니다. 화면은 주로 키보드 단축키를 통해 제어됩니다. screen에 대한 모든 키보드 단축키는 Ctrl-a로 시작합니다("a\ 키를 누른 상태에서 Ctrl 키를 누르십시오). 이러한 키 입력 순서는 screen 다음에 누르는 키에 주의를 기울여야 합니다.

화면에 대한 버전 정보를 요청할 때 이미 한 번 이 패러다임을 사용했습니다. Ctrl-a ?를 입력하여 더 유용한 정보를 얻는 데 사용하겠습니다.

Output
Screen key bindings, page 1 of 2. Command key: ^A Literal ^A: a break ^B b license , removebuf = clear C lockscreen ^X x reset Z colon : log H screen ^C c copy ^[ [ login L select ' detach ^D d meta a silence _ digraph ^V monitor M split S displays * next ^@ ^N sp n suspend ^Z z dumptermcap . number N time ^T t fit F only Q title A flow ^F f other ^A vbell ^G focus ^I pow_break B version v hardcopy h pow_detach D width W help ? prev ^H ^P p ^? windows ^W w history { } quit \ wrap ^R r info i readbuf < writebuf > kill K k redisplay ^L l xoff ^S s lastmsg ^M m remove X xon ^Q q [Press Space for next page; Return to end.]

내부 키보드 단축키 화면입니다. 훌륭한 빠른 참조이기 때문에 여기에 오는 방법을 기억하고 싶을 것입니다. 하단에서 볼 수 있듯이 Space를 눌러 더 많은 명령을 얻을 수 있습니다.

좋아, 좀 더 재미있는 걸 해보자. 이 창에서 top이라는 프로그램을 실행하면 프로세스에 대한 정보가 표시됩니다.

  1. top
Output
top - 16:08:07 up 1:44, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 507620k total, 262920k used, 244700k free, 8720k buffers Swap: 0k total, 0k used, 0k free, 224584k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 3384 1836 1288 S 0.0 0.4 0:00.70 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0 5 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kworker/u:0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 12 root 20 0 0 0 0 S 0.0 0.0 0:00.03 sync_supers 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd 18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md

자, 이제 VPS에서 프로세스를 모니터링하고 있습니다. 그러나 우리가 보고 있는 프로그램에 대한 자세한 정보를 찾기 위해 몇 가지 명령을 실행해야 한다면 어떻게 해야 할까요? "top\을 종료할 필요가 없습니다. 이 명령을 실행하기 위해 새 창을 만들 수 있습니다.

Ctrl-a c 시퀀스는 우리를 위한 새 창을 만듭니다. 이제 다른 창에서 수행하던 모니터링을 방해하지 않고 원하는 명령을 실행할 수 있습니다.

다른 창은 어디로 갔습니까? Ctrl-a n을 사용하여 다시 돌아갈 수 있습니다.

이 시퀀스는 실행 중인 다음 창으로 이동합니다. 창 목록이 줄 바꿈되므로 현재 창 외에 다른 창이 없으면 첫 번째 창으로 다시 전환됩니다.

Ctrl-a p는 현재 창을 반대 방향으로 변경합니다. 따라서 세 개의 창이 있고 현재 세 번째 창에 있는 경우 이 명령은 두 번째 창으로 전환합니다.

동일한 두 창 사이를 전환할 때 사용할 수 있는 유용한 단축키는 Ctrl-a Ctrl-a입니다.

이 시퀀스는 가장 최근에 방문한 창으로 이동합니다. 따라서 이전 예에서 이것은 세 번째 창으로 다시 이동합니다.

이 시점에서 우리가 만들고 있는 모든 창을 어떻게 추적할 수 있는지 궁금할 것입니다. 고맙게도 screen에는 다양한 세션을 관리하는 다양한 방법이 있습니다. 먼저 총 4개의 창에 대해 3개의 새 창을 만든 다음 Screen의 창 관리 도구 중 하나인 Ctrl-a w를 사용해 보겠습니다. Ctrl-a c Ctrl-a c Ctrl-a c Ctrl-a w 입력:

Output
0$ bash 1$ bash 2-$ bash 3*$ bash

이 명령에서 몇 가지 유용한 정보를 얻습니다. 현재 창 목록입니다. 여기에는 네 개의 창이 있습니다. 각 창에는 번호가 있으며 창은 "0\부터 시작하여 번호가 매겨집니다. 현재 창은 번호 옆에 별표가 있습니다.

따라서 현재 창 #3(첫 번째 창은 0이므로 실제로는 네 번째 창)에 있음을 알 수 있습니다. Ctrl-a 1을 사용하여 1번 창으로 빠르게 돌아갈 수 있습니다.

인덱스 번호를 사용하여 원하는 창으로 바로 이동할 수 있습니다. Ctrl-a w를 사용하여 창 목록을 다시 봅시다:

Output
0$ bash 1*$ bash 2$ bash 3-$ bash

보시다시피 별표는 현재 창 #1에 있음을 알려줍니다. Ctrl-a &ldquo;를 사용하여 창을 전환하는 다른 방법을 시도해 보겠습니다.

Output
Num Name Flags 0 bash $ 1 bash $ 2 bash $ 3 bash $

이번에는 실제 탐색 메뉴를 얻습니다. 위쪽 및 아래쪽 화살표를 사용하여 탐색할 수 있습니다. Enter 키를 눌러 창으로 전환합니다.

이것은 매우 유용하지만 지금은 모든 창의 이름이 "bash\입니다. 별로 도움이 되지 않습니다. 일부 세션의 이름을 지정해 보겠습니다. 예를 들어 Ctrl-a 0을 사용하여 이름을 지정하려는 창으로 전환합니다. 를 입력한 다음 Ctrl-a A를 사용합니다.

Output
Set window's title to: bash

Ctrl-a A 시퀀스를 사용하여 세션 이름을 지정할 수 있습니다. 이제 "bash\ 위로 백스페이스를 누른 다음 원하는 대로 이름을 바꿀 수 있습니다. 다시 0번 창에서 top을 실행하므로 이름을 로 지정합니다. 모니터링.

Ctrl-a &ldquo;로 결과를 확인하십시오.

Output
Num Name Flags 0 monitoring $ 1 bash $ 2 bash $ 3 bash $

이제 창 #0에 대한 보다 유용한 레이블이 있습니다. 그래서 우리는 창을 만들고 이름을 지정하는 방법을 알고 있지만 더 이상 필요하지 않을 때 어떻게 제거합니까? "kill\을 나타내는 Ctrl-a k 시퀀스를 사용합니다.

Output
Really kill this window [y/n]

3단계 – 화면 세션 관리

화면을 종료하고 모든 창을 종료하려면 Ctrl-a \\를 사용할 수 있습니다.

Output
Really quit and kill all your windows [y/n]

이것은 스크린 세션을 파괴할 것입니다. 우리가 만든 모든 창과 완료되지 않은 작업을 잃게 됩니다.

그러나 우리는 "스크린\ 사용의 큰 이점 중 하나를 탐구하고 싶습니다. 세션을 파괴하고 싶지 않고 분리하고 싶습니다. 분리하면 스크린 인스턴스의 프로그램이 계속 실행될 수 있지만 기본 콘솔 세션(처음부터 "screen\을 시작한 세션)에 다시 액세스합니다. 스크린 세션은 여전히 존재하며 백그라운드에서 관리됩니다. Ctrl-a d를 사용하여 분리하십시오.

Output
[detached from 1835.pts-0.Blank]

이제 세션이 분리되었습니다. 어떻게 다시 들어갈 수 있습니까?

  1. screen –r

-r 플래그는 다시 연결을 나타냅니다. 이제 스크린 세션으로 돌아왔습니다. 그래도 스크린 세션이 여러 개인 경우에는 어떻게 됩니까? screen 세션을 시작하고 분리한 다음 새 screen 세션을 시작하고 분리하면 어떻게 됩니까?

screen을 실행한 다음 Ctrl-a d로 분리하고 screen을 다시 실행한 다음 Ctrl-a d로 분리해 보세요. 코드> 다시.

연결할 세션을 화면에 어떻게 알릴 수 있습니까?

  1. screen –ls
Output
There are screens on: 2171.pts-0.Blank (07/01/2013 05:00:39 PM) (Detached) 1835.pts-0.Blank (07/01/2013 03:50:43 PM) (Detached) 2 Sockets in /var/run/screen/S-justin.

이제 세션 목록이 생겼습니다. -r 플래그 뒤에 ID 번호를 입력하여 두 번째 항목을 다시 연결할 수 있습니다.

  1. screen –r 1835

두 대의 별도 컴퓨터 또는 터미널 창에 세션을 연결하려면 어떻게 해야 합니까? 세션을 공유할 수 있는 -x 플래그를 사용할 수 있습니다.

  1. screen –x

4단계 – 화면 내에서 터미널 관리

screen 내에서 실행하는 터미널 세션을 관리하는 데 도움이 되는 여러 명령이 있습니다.

텍스트를 복사하려면 Ctrl-a[]를 사용할 수 있습니다.

이렇게 하면 화살표 키나 HJKL로 이동할 수 있는 커서가 나타납니다. 복사를 시작하려는 위치로 이동하고 Enter 키를 누릅니다. 복사하려는 위치의 끝으로 이동하고 Enter 키를 다시 누릅니다. 그러면 텍스트가 클립보드에 복사됩니다.

한 가지 알아야 할 점은 이것이 Screen의 스크롤링 메커니즘이기도 하다는 것입니다. 화면 밖에 있는 일부 텍스트를 보려면 Ctrl-a[]를 누른 다음 화면 위로 스크롤하면 됩니다.

Ctrl-a ]로 복사한 텍스트를 붙여넣을 수 있습니다.

또 다른 작업은 다른 화면 창에서 실행 중인 프로그램을 모니터링하는 것입니다.

하나의 창에서 무언가를 컴파일하고 있고 그것이 언제 완료되었는지 알고 싶다고 가정해 봅시다. Ctrl-a _를 사용하여 해당 창의 무음 상태를 모니터링하도록 screen에 요청할 수 있습니다. 그러면 30초 동안 출력이 생성되지 않을 때 알려줍니다.

다른 예를 들어 봅시다. 창이 Google에 4번 핑 완료되면 화면이 알려주도록 합시다.

  1. ping –c 4 www.google.com

그런 다음 Ctrl-a _를 입력합니다.

Output
The window is now being monitored for 30 sec. Silence.

이제 다른 창에서 작업을 수행하고 Ctrl-a 1을 입력하여 이 창의 작업이 완료되면 알림을 받을 수 있습니다.

Output
Window 2: silence for 30 seconds

반대로 특정 창에서 활동이 발생하면 경고를 받을 수도 있습니다.

  1. sleep 20 && echo “output”

그런 다음 Ctrl-a M을 입력합니다.

Output
Window 2 (bash) is now being monitored for all activity.

이제 명령이 출력을 생성할 때 경고가 표시됩니다. 결과를 보려면 Ctrl-a 1을 사용하십시오.

Output
Activity in window 2

몇 가지 중요한 변경을 수행할 예정이며 실행하는 모든 명령에 대한 로그를 원한다고 가정해 보겠습니다. Ctrl-a H로 세션을 기록할 수 있습니다.

Output
Creating logfile "screenlog.1".

화면 영역

한 번에 여러 창을 표시해야 하는 경우 화면에서 "영역\이라고 하는 것을 사용할 수 있습니다. 현재 영역을 분할하여 더 많은 영역을 만듭니다. 현재 영역을 가로로 분할하려면 Ctrl-a S<를 사용할 수 있습니다. /코드>.

이렇게 하면 현재 창이 화면의 위쪽 절반으로 이동하고 그 아래에 새로운 빈 영역이 열립니다. Ctrl-a [tab]로 하단 화면으로 이동할 수 있습니다.

그런 다음 하단 영역에 새 창을 만들거나 일반적인 방법으로 보기를 다른 창으로 변경할 수 있습니다.

현재 영역을 죽이고 싶다면 Ctrl-a X를 사용할 수 있습니다.

실제 창을 파괴하지 않고 영역을 파괴합니다. 즉, 해당 영역에서 프로그램을 실행 중인 경우 일반 창으로 계속 액세스할 수 있으며 해당 창에 대한 보기가 손상되었습니다.

세로로 분할하려면 Ctrl-a |를 대신 사용할 수 있습니다.

수직 분할에 대한 컨트롤은 수평 분할과 동일합니다. 몇 개의 다른 지역을 추가했고 단일 지역으로 돌아가고 싶다면 현재 지역을 제외한 모든 지역을 파괴하는 Ctrl-a Q를 사용할 수 있습니다.

5단계 – 화면과 함께 Byobu 사용

screen의 뛰어난 개선 사항은 byobu라는 프로그램입니다. 화면의 래퍼 역할을 하며 향상된 사용자 경험을 제공합니다. Ubuntu에서는 다음을 사용하여 설치할 수 있습니다.

  1. sudo apt install byobu

시작하기 전에 byobu에게 screen을 백엔드로 사용하도록 지시해야 합니다. 다음 명령으로 이를 수행할 수 있습니다.

  1. byobu-select-backend
Output
Select the byobu backend: 1. tmux 2. screen Choose 1-2 [1]:

여기에서 화면을 선택하여 기본 터미널 관리자로 설정할 수 있습니다.

이제 screen을 입력하여 세션을 시작하는 대신 byobu를 입력할 수 있습니다.

  1. byobu

Ctrl-a를 처음 입력할 때 byobu가 이를 화면 명령으로 인식하도록 해야 합니다.

Output
Configure Byobu's ctrl-a behavior... When you press ctrl-a in Byobu, do you want it to operate in: (1) Screen mode (GNU Screen's default escape sequence) (2) Emacs mode (go to beginning of line) Note that: - F12 also operates as an escape in Byobu - You can press F9 and choose your escape character - You can run 'byobu-ctrl-a' at any time to change your selection Select [1 or 2]:

byobu를 정상적으로 사용하려면 1을 선택하십시오.

인터페이스는 창 목록 및 시스템 정보와 같은 많은 유용한 정보를 제공합니다. 우분투에서는 심지어 얼마나 많은 패키지에 보안 업데이트가 있는지 알려주고 숫자 뒤에 빨간색 배경에 느낌표가 붙습니다.

byobu와 screen을 사용할 때 한 가지 다른 점은 byobu가 실제로 세션을 관리하는 방식입니다. 분리된 후 byobu를 다시 실행하면 새 세션을 만드는 대신 이전 세션을 다시 연결합니다.

새 세션을 만들려면 byobu –S를 사용합니다.

  1. byobu –S sessionname

sessionname을 새 세션을 호출할 이름으로 변경합니다. 다음과 함께 현재 세션 목록을 볼 수 있습니다.

  1. byobu –ls
Output
There are screens on: 22961.new (07/01/2013 06:42:52 PM) (Detached) 22281.byobu (07/01/2013 06:37:18 PM) (Detached) 2 Sockets in /var/run/screen/S-root.

그리고 세션이 여러 개인 경우 byobu를 실행하면 연결할 세션을 선택하는 메뉴가 표시됩니다.

  1. byobu
Output
Byobu sessions... 1. screen: 22961.new (07/01/2013 06:42:52 PM) (Detached) 2. screen: 22281.byobu (07/01/2013 06:37:18 PM) (Detached) 3. Create a new Byobu session (screen) 4. Run a shell without Byobu (/bin/bash) Choose 1-4 [1]:

현재 세션 중 하나를 선택하거나 새 byobu 세션을 만들거나 심지어 byobu를 사용하지 않고 새 셸을 가져올 수도 있습니다.

원격으로 관리하는 클라우드 서버에서 유용할 수 있는 한 가지 옵션은 세션에 로그인할 때마다 byobu가 자동으로 시작되도록 하는 것입니다. 즉, 세션에서 연결이 끊어져도 작업이 손실되지 않으며 다시 연결하여 이전 위치로 바로 돌아갈 수 있습니다.

로그인할 때마다 byobu가 자동으로 시작되도록 하려면 터미널에 다음을 입력하십시오.

  1. byobu-enable
Output
The Byobu window manager will be launched automatically at each text login. To disable this behavior later, just run: byobu-disable Press <enter> to continue…

이 기능을 다시 끄려면 다음을 입력하십시오.

  1. byobu-disable

더 이상 자동으로 시작되지 않습니다.

결론

이 자습서에서는 screen을 설치하고 사용한 다음 byobu를 사용하여 터미널 세션을 관리했습니다. 여러 실행 환경을 즉석에서 분리하고 전환하는 여러 가지 단축키를 배웠습니다. 많은 성숙한 Unix 터미널 인터페이스와 마찬가지로 Screen은 독특할 수 있지만 강력하고 유비쿼터스하기 때문에 언제 편리하게 사용할 수 있는지 알 수 없습니다.