테스트 환경 : Rocky(RHEL) Linux 8 / 9, CentOS(RHEL) 7

'PC(Notebook) 또는 VDI -> Gateway 서버 -> Linux Server 접속' 환경에서 Gateway 서버에 아래와 같이 screen 설정을 적용하여 사용하면

PC에서 Gateway 서버를 여러번 접속하지 않고 다수의 Linux 서버를 접속할 수 있다.

그 외 일반 적인 환경에서도 이 포스트에서 설명하는 데로 screen을 사용하면 편리한 멀티 터미널 환경을 사용할 수 있다.


.screenrc 적용 (screen 패키지 설치)

curl -k -s https://mapoo.net/downfiles/Linux/screen-setup.sh | bash -s

-> root 계정에서 위 명령 라인 복붙하기


screen 멀티 세션 생성 / 사용 방법

1. screen multi-tab 생성
1) screen 터미널 만들기
screen
또는 세션명을 지정하여 만들기
screen -S my-screen (또는 screen -R my-screen)

2) 4개의 multi-tab 터미널 만들기
Ctrl + a + c
Ctrl + a + c
Ctrl + a + c
Ctrl + a + c

2. multi-tab 터미널 넘나들기
Ctrl + a + a (최근 2개 창만)
F1 ~ F4 (또는 Ctrl + a + 1 ~ 4)
(최대 9개 창까지 가능)


-------------------- Screen 사용 설명 ----------------------
# screen session dettach
Ctrl + a + d

# screen session list 확인
screen -ls
(또는 ps aux | grep SCREEN)

# screen session이 한 개일 경우 dettached된 session에 reattach
screen -r

# screen session의 PID(Process ID)로 reattach
screen -r PID

# screen session 생성 (이름 중복 가능)
screen -S my-screen
(my-screen이 있을 경우 PID를 다르게 하여 같은 이름으로 생성됨)

# vi 모드로 진입하여 buffer 쌓인 출력 결과 확인
Ctrl + a + Esc


.screenrc 의 내용 (참고)

위에서 받은 screenrc 파일의 내용이 아래와 같다.

# tab-completion flash in heading bar
vbell off

# keep scrollback n lines (Edit vi style with Ctrl + a + Esc)
defscrollback 100000

# Doesn't fix scrollback problem on xterm because if you scroll back all you see is the other terminals history.
termcapinfo xterm* ti@:te@

# Don't display the copyright page
startup_message off

# change the hardstatus settings to give an window list at the bottom of the
# screen, with the time and date and with the current window highlighted (text: green, background: Red)
hardstatus on
hardstatus alwayslastline
hardstatus string "%{gK}%-w%{gR}%n*%t%{-}%+w %= %c ${USER}@%H"
# Full time display (example: 11-30 Sun 13:15:01 root@myserver)
#hardstatus string "%{gK}%-w%{gR}%n*%t%{-}%+w %= %m-%d %D%c:%s ${USER}@%H"

# Start window numbering at 1 (Chagne screen 0 to 1)
bind c screen 1
bind ^c screen 1
bind 0 select 10
screen 1

# Bind Windows key - F1 ~ F9 (It's same with Ctrl + a + 1 ~ 9)
bindkey -k k1 select 1
bindkey -k k2 select 2
bindkey -k k3 select 3
bindkey -k k4 select 4
bindkey -k k5 select 5
bindkey -k k6 select 6
bindkey -k k7 select 7
bindkey -k k8 select 8
bindkey -k k9 select 9

참조: https://softpanorama.org/Utilities/Screen/screenrc_examples.shtml


screen-setup.sh 내용 (참고)

#!/bin/bash
which screen &> /dev/null
if [ $? = 1 ]; then
    MAJOR=$(rpm --eval %rhel)
    if [ "$MAJOR" = "9" ]; then
        dnf install -y https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/Packages/s/screen-4.8.0-6.el9.x86_64.rpm
    elif [ "$MAJOR" = "8" ]; then 
        dnf install -y https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/s/screen-4.6.2-12.el8.x86_64.rpm
    else
        yum install -y screen
    fi
fi

mv -f ~/.screenrc ~/.screenrc_bak; curl -k -s https://mapoo.net/downfiles/Linux/screenrc -o ~/.screenrc


적용 시 화면

이 포스트에서 제공되는 .screenrc로 설정 후 screen을 여러개 띄우면 아래와 같이 표시되는 것을 볼 수 있다.

  • screen 실행 후 Ctrl + a + c 키를 4번 눌로 4개의 세션을 추가로 생성한 모습이다.
    (F1 ~ F4 키 또는 Ctrl + a + 1 ~ 4 키를 눌러 세션 탭을 넘나들 수 있음)
  • 좌측에 생성된 각각의 screen 세션 터미널이 보이고, 현재 지정된 터미널 세션이 빨간색으로 하이라이트 표시됨
  • 우측에는 현재 시각 정보와 함께 마스터 screen 세션의 호스트 정보가 표시됨
  • 기본적으로는 screen의 첫번째 세션 터미널은 0부터 표기되지만 1로 변경 적용함. (F1 ~ F9 키에 직관적으로 맵핑하기 위함)
  • Ctrl + a + Esc 키를 눌러 vi 모드로 진입 가능. 진입 후 / 또는 ? 키를 입력하고 단어 찾기 등을 할 수 있음. defscrollback 100000 설정에 의해 10만 라인까지 버퍼에 기록됨.

screen multi-tab

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다