리눅스 Screen 사용법
GNU screen은 스크린 매니저로, 가상의 터미널을 생성하고 프로세스를 실행시킬 수 있다.
오래 걸리는 태스크를 원격 서버에서 실행할 때 중간에 커넥션이 끊기면 태스크도 종료되는데, screen을 사용하면 연결이 끊기더라도 원격 서버에서는 태스크가 계속 실행되고, 나중에 다시 연결할 수도 있다.
screen 설치
대부분 리눅스 배포판에선 screen이 설치되어 있다. 맥에도 설치되어 있다.
$ screen --version
Screen version 4.00.03 (FAU) 23-Oct-06
위 명령어로 현재 설치된 screen의 버전을 확인할 수 있다
apt (Ubuntu, debian, ...)
$ sudo apt install screen
yum (Fedora, CentOS, ...)
$ sudo dnf install epel-release
$ sudo dnf install screen
페도라 계열에서는 EPEL(Extra Packages for Enterprise Linux) repository 설치가 필요하다.
dnf (Rockylinux, ...)
$ sudo dnf install epel-release
$ sudo dnf install screen
Screen 사용법
$ screen
위 명령어로 스크린 세션을 만들고, 새 윈도우를 만들어 쉘을 실행시킬 수 있다.
screen 세션 내에서 명령어 목록은 Ctrl+a ?
로 확인할 수 있다.
$ screen -S 세션명
관리하기 쉽게 스크린 생성시 세션명을 붙일 수 있다.
명령어
스크린 세션을 만들 때, 하나의 윈도우를 만들고 쉘을 실행시키는건데, 한 스크린 세션에서 여러개의 윈도우를 만들 수 있다.
새 윈도우를 만들려면 Ctrl+a c
를 입력하면 되고, 0~9 순서의 인덱스로 생성된다.
아래는 스크린에서 자주 사용되는 명령어 목록이다
Ctrl+a c
: 새 윈도우 생성Ctrl+a "
: 모든 윈도우 목록 보기Ctrl+a 0
: 윈도우 0번으로 전환 (0~9)Ctrl+a n
: 다음 윈도우로 전환Ctrl+a A
: 현재 윈도우 RenameCtrl+a S
: 현재 리전을 상하로 나눔Ctrl+a |
: 현재 리전을 좌우로 나눔Ctrl+a tab
: 포커스를 다음 리전으로 이동Ctrl+a Ctrl+a
: 현재, 이전 윈도우로 토글Ctrl+a Q
: 현재 리전을 제외한 모든 리전을 닫기Ctrl+a X
: 현재 리전을 닫기
Detach
현재 스크린 세션에서 나오려면 Ctrl+a d
를 입력한다
detach하더라도 스크린 세션 안에서 동작중인 프로그램은 계속 실행된다
Reattach
스크린 세션에 다시 붙으려면 아래 명령어를 입력한다
$ screen -r
만약 스크린 세션이 여러개라면, 아래처럼 screen -ls
로 세션 목록을 출력한 뒤, 원하는 스크린 세션의 id를 입력해야 한다.
$ screen -ls
There are screens on:
55427.foo (Detached)
54060.ttys000.vincejoe-PC (Detached)
2 Sockets in /var/folders/j6/19jv6r6s0dg2l843c76w9sbr0000gn/T/.screen.
예를 들어 스크린 세션이 위처럼 두개 있을 때, 아래 세션에 붙고 싶다면
$ screen -r 54060
위처럼 -r 뒤에 세션 아이디를 입력한다.
$ screen -r foo
또는 named session을 생성한 경우, 세션 이름을 입력한다.