서버의 기술, 웹의 경험, 디자인의 창조력, 코드의 세계

+61 2 8091 3767

질문, 의견 또는 우려 사항이 있으십니까? 당사의 전담 전문가 팀은 귀하의 의견을 듣고 도움을 드릴 준비가 되어 있습니다. 소셜 미디어, 전화, 실시간 채팅을 통해 연락해 주세요.

스크린(Screen)터미널 멀티 플렉스 활용으로 작업 효율 극대화 하기 – 우분투 22.04

오늘은 리눅스 사용자들이 꼭 알아둬야 할 screen 사용법에 대해 이야기해보려고 합니다. screen은 터미널 창을 분할하여 여러 작업을 동시에 처리할 수 있게 해주는 유용한 도구입니다. 이 글에서는 스크린의 설치부터 기본 사용법, 유용한 단축키 까지 알려드리겠습니다. 리눅스를 사용하는 모든 분들께 도움이 되는 정보가 될 것입니다. 함께 살펴보시죠!

스크린(Screen) 설치

아마도 우분투를 이용하고 있다면 이미 설치가 되어 있을 겁니다. 그래도 혹시 없다면 아래 명령어로 쉽게 설치가 가능합니다.

$ apt update
$ apt install screen

설치 확인

$ which screen
# Output
/usr/bin/screen

스크린(Screen) 세션 시작

세션의 이름을 지정하여 스크린 시작, 예를 들어 ‘screen -S learn-screen’ 이렇게 입력하여 시작하게 되면 나중에 작업 스크린 세션 구분이 쉬워 집니다.

$ screen -S [세션이름]

또는 screen 명령어를 통해 빠르게 실행

$ screen
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 3, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, see https://www.gnu.org/licenses/, or
contact Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA.

Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen-devel@gnu.org


Capabilities:
+copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256 +utf8 +rxvt +builtin-telnet



                       [Press Space or Return to end.]

위와 같은 화면이 보이면 정상적으로 실행된 것으로, enter 를 누르고 ctrl + a, v 키를 누르면, 아래와 같이 버전을 확인해 볼 수 있습니다.

# Output
screen 4.09.00 (GNU) 30-Jan-22

스크린 내부 화면을 통한 단축키 확인은 ctrl + a , ? 모든 명령어는 ctrl + a를 누르면 확인할수 있습니다. 여기서 대소문자 구분에 주의해야 합니다.

Screen key bindings, page 1 of 1.

Command key:  ^A   Literal ^A:  a

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

^]   paste .
"    windowlist -b
-    select -
0    select 0
1    select 1
2    select 2
3    select 3
4    select 4
5    select 5
6    select 6
7    select 7
8    select 8
9    select 9
I    login on
O    login off
]    paste .
|    split -v
:kB: focus prev

스크린의 진짜 활용은 작업을 계속 유지하며, 다른 작업을 계속 수행을 할 수 있다는 점입니다.
예를 들어 top 또는 컴파일 작업, 무언가 화면에서 대기해야 하는 작업들을 계속 유지하며, 다른 작업을 계속 이어갈수 있습니다. 세션 안에서 여러 가상 화면을 만듦으로서 가능하며, 세션 도 여러 개 연결이 가능합니다. 세션1- 화면여러개, 세션2 -화면 여러개 이렇게 생성이 가능합니다. 일단 세션 1에서 화면을 관리하는 방법에 대해 보겠습니다.

스크린(Screen) 세션 내 화면 관리

가상 화면을 추가하는 단축키는 ctrl + a, c 입니다. 이렇게 몇 번 반복해 보세요.
ctrl + a, c 통해 추가한 화면을 목록으로 보려면, ctrl + a, " 누르면 됩니다. 또는 화면 간 전환 단축키는 ctrl + a, p 전 화면 전환, ctrl + a, n 은 다음 화면 으로 전환 하는 식으로 스크린 간 이동을 할 수 있습니다. 현재 창의 위치를 알고 싶다면, ctrl + a, w 를 누르면 현재 창 위치를 아래와 같이 확인 할 수 있습니다. 현재는 3*번 창 이네요.

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

ctrl + a , 0 (스크린 숫자)을 누르면 바로 원하는 스크린으로 이동이 가능합니다.

근데 좀 구분하기가 힘듭니다. 화면에 이름을 부여하는 방법은 ctrl + a, A 입니다.

# Output
Set window's title to: screen-3

ctrl + a, " 눌러서 보면 제가 지정한 screen-3 이 보이네요.

# Output
Num Name Flags

0 bash $
1 bash $
2 bash $
3 screen-3

현재 창을 제거하려면, ctrl + a, k 를 누릅니다. 또는 exit 입력 (확인 없이 바로 제거)

# Output
Really kill this window [y/n]

모든 화면을 제거하려면, ctrl + a, \ 를 누릅니다. (세션도 삭제됨)

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

화면 다중 분할 (수평, 수직)

화면을 다중으로 분할 할 수가 있습니다. 수평 분할은 ctrl + a, S 를 누르면 화면이 나뉘고 하단에 추가된 블랭크 화면으로 넘어가서 ctrl + a, tab 누른 후, ctrl + a, c 로 화면을 만듭니다. 수직 분할은 ctrl + a, | 누르면 세로로 화면이 나뉩니다. 현재 보이는 창을 없애려면 ctrl + a, X 를, 현재 창을 제외한 모든 창을 제거하려면, ctrl + a, Q 를 누릅니다.

문자 복사, 붙여넣기

ctrl + a, [ 복사 시작, 화살표 키나 HJKL을 통해 원하는 곳으로 가서 블럭 지정 enter로 마무리, ctrl + a, ] 붙여 넣기

명령어 실행 완료 및 작업완료 벨 알림, 비 활동 알림 지정

nano 에디터로 .screenrc 파일을 편집하여, 특정 작업을 지시하고 작업이 끝나면 벨 알림 받기

inactivity: 특정 시간 동안 아무런 활동이 없을 때 알림을 줍니다.
(예: 긴 작업이 중단될 때)
bell_msg: 터미널 벨 문자가 출력될 때 알림을 줍니다.
(예: 명령어 실행 완료 시)

nano ~/.screenrc
# 활동이 멈췄을 때 알림
inactivity "작업 완료: %t"

# 벨 알림 메시지 설정
bell_msg "벨 발생: %t"

# 비활동 감지 시간 설정 (15분 동안 비활동 감지)
idle 900   

'%t'는 현재 활성화된 screen 창의 제목을 나타냄. 스크린창 제목 설정 방법 : ctrl + a, A
비활동 알림 설정은 ctrl + a, _ 를 누르면 30초간 비활동시 알림

예시 작업을 통해 봅시다.

먼저, ctrl + a, M 을 눌러 screen에서 벨 모니터링을 활성화합니다.

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

여기서는 ping 명령어 실행 후 echo를 사용하여 벨 문자를 출력해 보겠습니다.

ping -c 30 www.google.com; echo -e '\a'
# Output
Bell in window 1

이 설정을 사용하면 ping 명령어 실행이 끝난 후 screen이 벨 알림을 통해 사용자에게 알려줍니다. 이 방법은 ping 외에도 다른 명령어에도 적용할 수 있으며, 작업 완료 시 시각적 또는 청각 적 피드백으로 알림을 받습니다.

로그생성

ctrl + a, H 누르면 화면 로그를 생성할 수 있습니다.

# Output
Creating logfile "screenlog.1".

스크린(Screen)세션 관리

현재 세션을 분리하려면, ctrl + a, d 를 누릅니다. 분리된 세션은 백그라운드 에서 계속 실행됩니다.

# Output
[detached from 222270.pts-0.noxwon]

분리된 세션 목록을 보려면, 명령어 ‘screen -ls’ 를 입력합니다.

screen -ls
# Output
There are screens on:
	222270.pts-0.noxwon	(11/12/2023 09:30:47 AM)	(Detached)
	221427.pts-0.noxwon	(11/12/2023 08:56:21 AM)	(Detached)
	203222.screen-lesson	(11/11/2023 08:29:39 PM)	(Detached)
	199826.pts-0.noxwon	(11/11/2023 06:04:04 PM)	(Detached)
4 Sockets in /run/screen/S-root.

원하는 세션으로 돌아가려면, ‘screen -r [세션명]’ 또는 ‘screen -r [숫자만]’, 세션이 하나일때는 그냥 ‘screen -r’

screen -r 203222.screen-lesson
screen -r 203222

세션을 완전히 제거하려면, ‘screen -S [세션 ID나 이름] -X quit’

screen -S 203222.screen-lesson -X quit

Share this article
Shareable URL
Prev Post

어떻게 하면 팔로잉 마우스 커서를 적용할수 있나요?🖱️

Next Post

이것만 꼭 기억하자, 나노(Nano) 에디터 필수 단축키 30가지 정리

댓글을 남겨주세요.😊

이메일 주소는 공개되지 않습니다. * 표시는 필수 입력 항목입니다.

Read next

초보자를 위한 서버 OS 리눅스 입문 안내서

초보자를 위한 이해하기 쉬운 리눅스 OS 서버 OS 리눅스 Linux®란 뭔가요? 서버 OS 리눅스는 UNIX 계열의 오픈 소스 운영 체제로, 다양한 하드웨어 플랫폼에서 동작하는 운영 체제입니다.…