테스트 환경 : 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