Linux의 화면 명령을 사용하는 방법
게시 됨: 2022-01-29 Linux screen
명령을 사용하면 실행 중인 터미널 애플리케이션을 백그라운드로 푸시하고 보고 싶을 때 앞으로 끌어올 수 있습니다. 또한 분할 화면 디스플레이를 지원하고 연결을 끊었다가 다시 연결한 후에도 SSH 연결을 통해 작동합니다!
관련: 초보자를 위한 10가지 기본 Linux 명령
화면 명령이란 무엇입니까?
screen
명령은 터미널 멀티플렉서이며 옵션으로 가득 차 있습니다. 그것이 많은 것을 할 수 있다고 말하는 것은 과소 평가의 할아버지입니다. 매뉴얼 페이지는 4,100줄 이상입니다.
다음은 screen
명령을 사용하는 가장 일반적인 경우이며 이 문서에서 더 자세히 다룰 것입니다.
- 표준 작업은 쉘이 있는 새 창을 만들고 명령을 실행한 다음 창을 배경으로 밀어내는 것입니다("분리"라고 함). 프로세스가 어떻게 수행되고 있는지 확인하려면 창을 다시 전경으로 가져오고("다시 연결") 다시 사용할 수 있습니다. 이는 터미널 창을 닫아 실수로 종료하지 않으려는 긴 프로세스에 유용합니다.
-
screen
세션이 실행되면 새 창을 만들고 그 안에서 다른 프로세스를 실행할 수 있습니다. 창 사이를 쉽게 이동하여 진행 상황을 모니터링할 수 있습니다. 터미널 창을 수직 또는 수평 영역으로 분할하고 다양한screen
창을 하나의 창에 표시할 수도 있습니다. - 원격 시스템에 연결하고
screen
세션을 시작하고 프로세스를 시작할 수 있습니다. 원격 호스트에서 연결을 끊고 다시 연결할 수 있으며 프로세스는 계속 실행됩니다. - 두 사람이 실시간으로 같은 것을 볼 수 있도록 두 개의 다른 SSH 연결 간에
screen
세션을 공유할 수 있습니다.
설치 화면
우분투에 screen
을 설치하려면 다음 명령을 사용하십시오.
sudo apt-get 설치 화면
Manjaro에 screen
을 설치하려면 다음 명령을 사용하십시오.
sudo pacman -Sy 화면
Fedora에서 다음을 입력합니다.
sudo dnf 설치 화면
화면 시작하기
screen
을 시작하려면 아래와 같이 입력하고 Enter 키를 누르십시오.
화면
라이선스 정보 페이지가 표시됩니다. 스페이스바를 눌러 두 번째 페이지를 읽거나 Enter 키를 눌러 명령 프롬프트로 돌아갈 수 있습니다.
명령 프롬프트에 남아 있고 아무 일도 일어나지 않은 것 같습니다. 그러나 이제 다중화된 터미널 에뮬레이터 내에서 셸을 실행하고 있습니다. 이것이 왜 좋은 일입니까? 자, 완료하는 데 오랜 시간이 걸릴 프로세스를 시작하겠습니다. 최신 Linux 커널에 대한 소스 코드를 다운로드하고 이를 latest_kernel.zip
이라는 파일로 리디렉션합니다.
이렇게 하려면 다음을 입력합니다.
컬 https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > 최신_커널.zip
다운로드가 시작되고 curl
출력에 진행 상황이 표시됩니다.
다음 비트의 이미지는 키 입력 시퀀스이기 때문에 보여드릴 수 없습니다. Ctrl+A를 입력하고 해당 키를 놓은 다음 d를 눌러 화면을 분리합니다.
다운로드 프로세스는 여전히 실행 중이지만 다운로드를 표시하는 창이 제거되었습니다. screen
세션을 시작한 터미널 창으로 돌아갑니다. 23167.pts-0.howtogeek
이라는 레이블이 붙은 screen
창이 분리되었다는 메시지가 표시됩니다.
다시 연결하려면 창 이름 시작 부분의 번호가 필요합니다. 잊어버린 경우 아래 표시된 것처럼 항상 -ls
(목록) 옵션을 사용하여 분리된 창 목록을 가져올 수 있습니다.
화면 -ls
준비가 되면 다음과 같이 -r
(재연결) 옵션과 다시 연결할 세션 번호를 사용할 수 있습니다.
화면 -r 23167
백그라운드에서 작동하던 창이 이제 터미널 창으로 돌아가지 않은 것처럼 다시 나타납니다.
그것이 결론에 이르기까지 진행되는 과정이라면 결국 완료될 것입니다. 지속적인 프로세스라면 결국 종료하고 싶을 것입니다. 어느 쪽이든 프로세스가 끝나면 exit
를 입력하여 screen
을 종료할 수 있습니다. 또는 Ctrl+A를 누른 다음 K를 눌러 창을 강제로 종료할 수 있습니다.
다음 명령을 입력합니다.
출구
창을 다시 연결하는 데 사용한 명령이 계속 표시되는 이전 터미널 창으로 돌아갑니다. 하나뿐인 분리된 창을 닫았기 때문에 screen
이 종료되고 있다는 메시지가 나타납니다.
관련: Linux 명령줄에서 파일을 다운로드하기 위해 curl을 사용하는 방법
명명된 화면 세션 사용
-S
(세션 이름) 옵션을 사용하여 screen
세션의 이름을 지정할 수 있습니다. 세션의 숫자 ID보다 기억하기 쉬운 이름을 사용하면 세션에 다시 연결하는 것이 더 편리합니다. 세션 이름을 "bigfile"로 지정하기 위해 다음을 입력합니다.
화면 -S 빅파일
screen
이 세션을 시작하면 명령 프롬프트가 있는 빈 창이 표시됩니다. 장기 실행 프로세스를 예로 사용할 수 있도록 큰 파일을 다운로드할 것입니다.
다음을 입력합니다.
컬 http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip
다운로드가 시작되면 Ctrl+A를 누른 다음 D를 눌러 세션을 분리합니다. 분리된 세션의 세부 정보를 보기 위해 screen
과 함께 -ls
(list) 옵션을 사용하기 위해 다음을 입력합니다.
화면 -ls
숫자 식별자(23266) 뒤에는 세션 이름(bigfile)이 표시됩니다. 세션 이름을 포함하여 다음을 입력하여 다시 연결합니다.
화면 -r 빅파일
다운로드 창에 다시 연결되고 긴 다운로드가 아직 진행 중임을 확인합니다.
다운로드가 완료되면 exit
를 입력하여 세션 창을 닫습니다.
다중 창에서 화면 사용
지금까지 분리된 창의 백그라운드에 단일 프로세스를 배치하기 위해 screen
을 사용했습니다. 그러나 screen
은 그 이상을 수행할 수 있습니다. 다음으로 컴퓨터의 일부 측면을 모니터링할 수 있는 몇 가지 프로세스를 실행합니다.
다음을 입력하여 "모니터"라는 화면 세션을 시작합니다.
화면 -S 모니터
새 창 세션의 명령 프롬프트에서 dmesg
를 시작하고 -H
(사람이 읽을 수 있음) 및 -w
(새 메시지 대기) 옵션을 사용합니다. 그러면 커널 버퍼 메시지가 표시됩니다. 새로운 메시지가 나타날 때마다 나타납니다.
다음을 입력합니다.
dmesg -H -w
기존 메시지가 나타납니다. dmseg
가 새 메시지를 기다리고 있기 때문에 명령 프롬프트로 돌아가지 않고 도착하는 대로 표시합니다.
관련: Linux에서 dmesg 명령을 사용하는 방법
다른 응용 프로그램을 실행하고 싶기 때문에 새 screen
창이 필요합니다. Ctrl+A를 누른 다음 C를 눌러 새 창을 만듭니다. 우리는 watch
를 사용하여 vmstat
를 반복적으로 실행할 것이므로 컴퓨터의 가상 메모리 사용량이 자주 업데이트됩니다.
새 명령 프롬프트에서 다음을 입력합니다.
시계 vmstat
vmstat
출력이 나타나고 2초마다 업데이트됩니다.
이제 두 프로세스가 실행 중입니다. screen
창 사이를 이동하려면 Ctrl+A와 창 번호를 누릅니다. 우리가 만든 첫 번째 것은 창 0(0)이고 다음은 창 1 등입니다. 첫 번째 창( dmesg
창)으로 이동하려면 Ctrl+A와 0을 누릅니다.
Ctrl+A와 1을 누르면 vmstat
창으로 돌아갑니다.
정말 멋지네요! Ctrl+A를 누른 다음 D를 눌러 이 세션에서 분리할 수 있습니다. 나중에 다시 연결할 수 있습니다. 두 세션 모두 계속 실행됩니다. 다시, 창 사이를 전환하려면 Ctrl+A와 전환하려는 창의 번호(0 또는 1)를 누릅니다.
다음 단계로 이동하여 하나의 창에서 두 화면을 모두 보겠습니다. 이 작업을 수행하면 이 단계를 유용하게 사용할 수 있는 크기로 터미널 창을 늘릴 수 있습니다. 우리의 예는 스크린샷의 크기로 제한되어 있으므로 창은 약간 비좁아 보일 것입니다.
이렇게 하려면 Ctrl+A를 누른 다음 Shift+S를 누릅니다(대문자 "S"가 필요함).
창은 두 개의 "영역"으로 나뉩니다.
상단 영역에는 여전히 vmstat
가 표시되고 하단 영역은 비어 있습니다. 아래 스크린샷에서 커서가 강조 표시되어 있습니다. 아래쪽 영역으로 이동하려면 Ctrl+A를 누른 다음 Tab을 누릅니다.
커서가 실제로는 빈 공간인 아래쪽 영역으로 이동합니다. 쉘이 아니므로 아무 것도 입력할 수 없습니다. 유용한 디스플레이를 얻으려면 Ctrl+A를 누른 다음 "0"을 눌러 이 영역에 dmesg
창을 표시합니다.
이렇게 하면 하나의 분할 창에서 두 라이브 출력이 모두 제공됩니다. Ctrl+A와 D를 눌러 창을 분리했다가 다시 연결하면 분할 창 보기가 손실됩니다. 그러나 다음 키보드 단축키를 사용하여 복원할 수 있습니다.
- Ctrl+A, S: 창을 가로로 분할합니다.
- Ctrl+A , Tab: 하위 영역으로 이동합니다.
- Ctrl+A, 0: 하단 영역에 창 0을 표시합니다.
우리는 한 단계 더 나아갈 수 있습니다. 이제 아래쪽 창을 세로로 분할하고 디스플레이에 세 번째 프로세스를 추가합니다. 아래쪽 영역에 커서가 있는 상태에서 Ctrl+A와 C를 눌러 쉘이 있는 새 창을 만듭니다. 아래쪽 영역은 새 창을 표시하고 명령 프롬프트를 제공합니다.
다음으로 df
명령을 실행하여 파일 시스템 사용량을 확인합니다.
DF
df
가 실행되는 것을 볼 때 Ctrl+A와 파이프 문자 (|)
를 누릅니다. 그러면 아래쪽 영역이 세로로 분할됩니다. Ctrl+A와 Tab을 눌러 새 영역으로 이동합니다. 다음으로 Ctrl+A와 0을 눌러 dmesg
창을 표시합니다.
영역에서 영역으로 이동하고 수직 또는 수평 분할을 추가할 수도 있습니다. 다음은 더 유용한 키 조합입니다.
- Ctrl+A: 현재 영역과 이전 영역 사이를 앞뒤로 이동합니다.
- Ctrl+A, Q: 현재 영역을 제외한 모든 영역을 닫습니다.
- Ctrl+A, X: 현재 영역을 닫습니다.
SSH를 통한 화면 사용
screen
을 사용하면 창 세션을 시작하고 분리하여 백그라운드에서 계속 실행하고 로그오프하거나 다시 로그인하고 세션을 다시 연결할 수 있습니다.
ssh
명령을 사용하여 다른 컴퓨터에서 SSH 연결을 만들어 보겠습니다. 연결할 계정의 이름과 원격 컴퓨터의 주소를 제공해야 합니다.
이 예에서는 다음을 입력합니다.
SSH 데이브@192.168.4.30
원격 컴퓨터에서 인증하고 로그인한 후 다음을 입력하여 "ssh-geek"이라는 screen
세션을 시작합니다.
화면 -S ssh-geek
데모 목적으로 screen
창에서 top
실행되지만 장기 실행 또는 무한 프로세스를 시작할 수 있습니다.
다음을 입력합니다.
맨 위
top
이 창에서 실행되면 Ctrl+A를 누른 다음 D를 눌러 창을 분리합니다.
원래의 원격 터미널 창으로 돌아갑니다.
아래와 같이 exit
를 입력하면 SSH 세션 연결이 끊기고 로컬 컴퓨터로 돌아갑니다.
출구
다시 연결하려면 다음을 입력합니다.
SSH 데이브@192.168.4.30
다시 연결하고 로그인한 후 다음을 입력하여 screen
세션을 다시 연결할 수 있습니다.
화면 -r SSH 괴짜
이제 여전히 실행 중인 top
인스턴스에 다시 연결되었습니다.
한 시스템에서 프로세스를 시작한 다음 다른 시스템에서 중단한 부분부터 다시 시작하려는 경우에 유용합니다.
관련: Linux 셸에서 SSH 키를 만들고 설치하는 방법
화면 세션 공유
screen
세션을 사용하여 두 사람이 동일한 창을 보고 상호 작용하도록 할 수도 있습니다. 컴퓨터에서 Fedora를 실행하는 누군가가 Ubuntu 서버에 연결하려고 한다고 가정해 보겠습니다.
그는 다음을 입력할 것입니다:
SSH 데이브@192.168.4.30
연결한 후 -S(세션 이름) 옵션을 사용하여 "ssh-geek"이라는 화면 세션을 시작합니다. 그는 또한 -d
(분리) 및 -m
(강제 생성) 옵션을 사용하여 이미 분리된 새 screen
세션을 생성합니다.
그는 다음을 입력합니다.
화면 -d -m -S ssh-geek
그는 세션을 연결하기 위해 -x
(멀티스크린 모드) 옵션을 사용하여 다음을 입력합니다.
화면 -x ssh-geek
Manjaro 컴퓨터에서 아래와 같이 다른 사람이 동일한 계정 자격 증명으로 Ubuntu 컴퓨터에 연결합니다.
SSH 데이브@192.168.4.1
연결되면 screen
명령을 입력하고 -X(다중 화면 모드) 옵션을 사용하여 다음과 같이 동일한 창 세션에 참여합니다.
화면 -X ssh-geek
이제 두 사람이 입력하면 다른 사람이 볼 수 있습니다. 예를 들어, 한 사람이 날짜 명령을 실행하면 두 사람 모두 날짜 명령을 입력한 것과 출력을 모두 봅니다.
두 사람은 이제 원격 Ubuntu 컴퓨터에서 실행되는 screen
세션을 공유하고 있습니다.
1987년에 처음으로 빛을 본 소프트웨어의 경우 screen
은 여전히 우수한 생산성을 제공합니다. 익숙해지면 유익한 시간이 될 것입니다!
관련: 알아야 할 37가지 중요한 Linux 명령
리눅스 명령어 | ||
파일 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · 압축 풀기 · 마운트 · 언마운트 · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · 파쇄 · srm | |
프로세스 | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · 종료 · 재부팅 · 정지 · poweroff · passwd · lscpu · crontab · 날짜 · bg · fg | |
네트워킹 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
관련: 개발자 및 열광자를 위한 최고의 Linux 노트북