Ubuntu 클라우드 서버에서 Screen을 설치하고 사용하는 방법
소개
Screen은 하나의 창에서 여러 터미널 세션을 사용할 수 있게 해주는 콘솔 응용 프로그램입니다. 이 프로그램은 셸 세션 내에서 작동하며 창 관리자가 창을 관리하는 방식과 유사하게 다른 터미널 세션의 컨테이너 및 관리자 역할을 합니다.
여러 터미널 창을 만드는 것이 불가능하거나 이상적이지 않은 상황이 많이 있습니다. X 서버를 실행하지 않고 여러 콘솔 세션을 관리해야 할 수도 있고, 많은 원격 클라우드 서버에 액세스해야 할 수도 있으며, 다른 작업을 수행하는 동안 실행 중인 프로그램의 출력을 모니터링해야 할 수도 있습니다.
tmux와 같이 이 문제에 대한 현대적인 올인원 솔루션이 있지만 screen
은 그 중에서 가장 완성도가 높으며 고유한 강력한 구문과 기능을 가지고 있습니다.
1단계 – 화면 설치
이 튜토리얼에서는 Ubuntu 22.04를 사용하지만 설치 프로세스 외에는 모든 최신 Linux 배포판에서 모든 것이 동일해야 합니다.
Screen은 Ubuntu에 기본적으로 설치되는 경우가 많습니다. apt
를 사용하여 패키지 소스를 업데이트하고 screen
을 설치할 수도 있습니다.
- sudo apt update
- sudo apt install screen
which screen
을 실행하여 screen
이 설치되었는지 확인합니다.
- which screen
Output/usr/bin/screen
다음 단계에서 screen
사용을 시작할 수 있습니다.
2단계 – 화면 사용
새 screen 세션을 시작하려면 screen
명령을 실행합니다.
- 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
를 누릅니다.
Outputscreen 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
이라는 프로그램을 실행하면 프로세스에 대한 정보가 표시됩니다.
- top
Outputtop - 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
입력:
Output0$ bash 1$ bash 2-$ bash 3*$ bash
이 명령에서 몇 가지 유용한 정보를 얻습니다. 현재 창 목록입니다. 여기에는 네 개의 창이 있습니다. 각 창에는 번호가 있으며 창은 "0\부터 시작하여 번호가 매겨집니다. 현재 창은 번호 옆에 별표가 있습니다.
따라서 현재 창 #3(첫 번째 창은 0이므로 실제로는 네 번째 창)에 있음을 알 수 있습니다. Ctrl-a 1
을 사용하여 1번 창으로 빠르게 돌아갈 수 있습니다.
인덱스 번호를 사용하여 원하는 창으로 바로 이동할 수 있습니다. Ctrl-a w
를 사용하여 창 목록을 다시 봅시다:
Output0$ bash 1*$ bash 2$ bash 3-$ bash
보시다시피 별표는 현재 창 #1에 있음을 알려줍니다. Ctrl-a “
를 사용하여 창을 전환하는 다른 방법을 시도해 보겠습니다.
OutputNum Name Flags
0 bash $
1 bash $
2 bash $
3 bash $
이번에는 실제 탐색 메뉴를 얻습니다. 위쪽 및 아래쪽 화살표를 사용하여 탐색할 수 있습니다. Enter 키를 눌러 창으로 전환합니다.
이것은 매우 유용하지만 지금은 모든 창의 이름이 "bash\입니다. 별로 도움이 되지 않습니다. 일부 세션의 이름을 지정해 보겠습니다. 예를 들어 Ctrl-a 0을 사용하여 이름을 지정하려는 창으로 전환합니다.
를 입력한 다음 Ctrl-a A
를 사용합니다.
OutputSet window's title to: bash
Ctrl-a A
시퀀스를 사용하여 세션 이름을 지정할 수 있습니다. 이제 "bash\ 위로 백스페이스를 누른 다음 원하는 대로 이름을 바꿀 수 있습니다. 다시 0번 창에서 top
을 실행하므로 이름을 로 지정합니다. 모니터링
.
Ctrl-a “
로 결과를 확인하십시오.
OutputNum Name Flags
0 monitoring $
1 bash $
2 bash $
3 bash $
이제 창 #0에 대한 보다 유용한 레이블이 있습니다. 그래서 우리는 창을 만들고 이름을 지정하는 방법을 알고 있지만 더 이상 필요하지 않을 때 어떻게 제거합니까? "kill\을 나타내는 Ctrl-a k
시퀀스를 사용합니다.
OutputReally kill this window [y/n]
3단계 – 화면 세션 관리
화면
을 종료하고 모든 창을 종료하려면 Ctrl-a \\
를 사용할 수 있습니다.
OutputReally quit and kill all your windows [y/n]
이것은 스크린 세션을 파괴할 것입니다. 우리가 만든 모든 창과 완료되지 않은 작업을 잃게 됩니다.
그러나 우리는 "스크린\ 사용의 큰 이점 중 하나를 탐구하고 싶습니다. 세션을 파괴하고 싶지 않고 분리하고 싶습니다. 분리하면 스크린 인스턴스의 프로그램이 계속 실행될 수 있지만 기본 콘솔 세션(처음부터 "screen\을 시작한 세션)에 다시 액세스합니다. 스크린 세션은 여전히 존재하며 백그라운드에서 관리됩니다. Ctrl-a d
를 사용하여 분리하십시오.
Output[detached from 1835.pts-0.Blank]
이제 세션이 분리되었습니다. 어떻게 다시 들어갈 수 있습니까?
- screen –r
-r
플래그는 다시 연결을 나타냅니다. 이제 스크린 세션으로 돌아왔습니다. 그래도 스크린 세션이 여러 개인 경우에는 어떻게 됩니까? screen 세션을 시작하고 분리한 다음 새 screen 세션을 시작하고 분리하면 어떻게 됩니까?
screen
을 실행한 다음 Ctrl-a d
로 분리하고 screen
을 다시 실행한 다음 Ctrl-a d
로 분리해 보세요. 코드> 다시.
연결할 세션을 화면
에 어떻게 알릴 수 있습니까?
- screen –ls
OutputThere 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 번호를 입력하여 두 번째 항목을 다시 연결할 수 있습니다.
- screen –r 1835
두 대의 별도 컴퓨터 또는 터미널 창에 세션을 연결하려면 어떻게 해야 합니까? 세션을 공유할 수 있는 -x
플래그를 사용할 수 있습니다.
- screen –x
4단계 – 화면 내에서 터미널 관리
screen
내에서 실행하는 터미널 세션을 관리하는 데 도움이 되는 여러 명령이 있습니다.
텍스트를 복사하려면 Ctrl-a[
]를 사용할 수 있습니다.
이렇게 하면 화살표 키나 HJKL로 이동할 수 있는 커서가 나타납니다. 복사를 시작하려는 위치로 이동하고 Enter 키를 누릅니다. 복사하려는 위치의 끝으로 이동하고 Enter 키를 다시 누릅니다. 그러면 텍스트가 클립보드에 복사됩니다.
한 가지 알아야 할 점은 이것이 Screen의 스크롤링 메커니즘이기도 하다는 것입니다. 화면 밖에 있는 일부 텍스트를 보려면 Ctrl-a[
]를 누른 다음 화면 위로 스크롤하면 됩니다.
Ctrl-a ]
로 복사한 텍스트를 붙여넣을 수 있습니다.
또 다른 작업은 다른 화면 창에서 실행 중인 프로그램을 모니터링하는 것입니다.
하나의 창에서 무언가를 컴파일하고 있고 그것이 언제 완료되었는지 알고 싶다고 가정해 봅시다. Ctrl-a _
를 사용하여 해당 창의 무음 상태를 모니터링하도록 screen
에 요청할 수 있습니다. 그러면 30초 동안 출력이 생성되지 않을 때 알려줍니다.
다른 예를 들어 봅시다. 창이 Google에 4번 핑 완료되면 화면
이 알려주도록 합시다.
- ping –c 4 www.google.com
그런 다음 Ctrl-a _
를 입력합니다.
OutputThe window is now being monitored for 30 sec. Silence.
이제 다른 창에서 작업을 수행하고 Ctrl-a 1
을 입력하여 이 창의 작업이 완료되면 알림을 받을 수 있습니다.
OutputWindow 2: silence for 30 seconds
반대로 특정 창에서 활동이 발생하면 경고를 받을 수도 있습니다.
- sleep 20 && echo “output”
그런 다음 Ctrl-a M
을 입력합니다.
OutputWindow 2 (bash) is now being monitored for all activity.
이제 명령이 출력을 생성할 때 경고가 표시됩니다. 결과를 보려면 Ctrl-a 1
을 사용하십시오.
OutputActivity in window 2
몇 가지 중요한 변경을 수행할 예정이며 실행하는 모든 명령에 대한 로그를 원한다고 가정해 보겠습니다. Ctrl-a H
로 세션을 기록할 수 있습니다.
OutputCreating logfile "screenlog.1".
화면 영역
한 번에 여러 창을 표시해야 하는 경우 화면에서 "영역\이라고 하는 것을 사용할 수 있습니다. 현재 영역을 분할하여 더 많은 영역을 만듭니다. 현재 영역을 가로로 분할하려면 Ctrl-a S<를 사용할 수 있습니다. /코드>.
이렇게 하면 현재 창이 화면의 위쪽 절반으로 이동하고 그 아래에 새로운 빈 영역이 열립니다. Ctrl-a [tab]
로 하단 화면으로 이동할 수 있습니다.
그런 다음 하단 영역에 새 창을 만들거나 일반적인 방법으로 보기를 다른 창으로 변경할 수 있습니다.
현재 영역을 죽이고 싶다면 Ctrl-a X
를 사용할 수 있습니다.
실제 창을 파괴하지 않고 영역을 파괴합니다. 즉, 해당 영역에서 프로그램을 실행 중인 경우 일반 창으로 계속 액세스할 수 있으며 해당 창에 대한 보기가 손상되었습니다.
세로로 분할하려면 Ctrl-a |
를 대신 사용할 수 있습니다.
수직 분할에 대한 컨트롤은 수평 분할과 동일합니다. 몇 개의 다른 지역을 추가했고 단일 지역으로 돌아가고 싶다면 현재 지역을 제외한 모든 지역을 파괴하는 Ctrl-a Q
를 사용할 수 있습니다.
5단계 – 화면과 함께 Byobu 사용
screen
의 뛰어난 개선 사항은 byobu
라는 프로그램입니다. 화면
의 래퍼 역할을 하며 향상된 사용자 경험을 제공합니다. Ubuntu에서는 다음을 사용하여 설치할 수 있습니다.
- sudo apt install byobu
시작하기 전에 byobu
에게 screen
을 백엔드로 사용하도록 지시해야 합니다. 다음 명령으로 이를 수행할 수 있습니다.
- byobu-select-backend
OutputSelect the byobu backend:
1. tmux
2. screen
Choose 1-2 [1]:
여기에서 화면
을 선택하여 기본 터미널 관리자로 설정할 수 있습니다.
이제 screen
을 입력하여 세션을 시작하는 대신 byobu
를 입력할 수 있습니다.
- byobu
Ctrl-a
를 처음 입력할 때 byobu가 이를 화면 명령으로 인식하도록 해야 합니다.
OutputConfigure 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
를 사용합니다.
- byobu –S sessionname
sessionname
을 새 세션을 호출할 이름으로 변경합니다. 다음과 함께 현재 세션 목록을 볼 수 있습니다.
- byobu –ls
OutputThere 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
를 실행하면 연결할 세션을 선택하는 메뉴가 표시됩니다.
- byobu
OutputByobu 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가 자동으로 시작되도록 하려면 터미널에 다음을 입력하십시오.
- byobu-enable
OutputThe Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
byobu-disable
Press <enter> to continue…
이 기능을 다시 끄려면 다음을 입력하십시오.
- byobu-disable
더 이상 자동으로 시작되지 않습니다.
결론
이 자습서에서는 screen
을 설치하고 사용한 다음 byobu
를 사용하여 터미널 세션을 관리했습니다. 여러 실행 환경을 즉석에서 분리하고 전환하는 여러 가지 단축키를 배웠습니다. 많은 성숙한 Unix 터미널 인터페이스와 마찬가지로 Screen은 독특할 수 있지만 강력하고 유비쿼터스하기 때문에 언제 편리하게 사용할 수 있는지 알 수 없습니다.