Screen 사용하기

Screen 이란?

terminal 또는 putty를 이용해 원격에서 작업하다 보면 여러개의 창을 띄우고 싶을 때가 많습니다. 이럴때 보통 여러개의 terminal을 띄워서 작업합니다. (저는 screen을 알기 전까지 그랬습니다…) 그런데 창을 하나, 둘 여러개 띄우고 작업을 하다보면 어느 창에서 어떤 작업을 하고 있었는지도 헷갈리기 시작하면서 관리의 어려움이 생기게 됩니다.

description
**screen**은 한 terminal로 한번만 로그인 한 후에 여러 쉘과 프로그램을 사용할 수 있습니다. 또한 **세션관리 기능**도 지원합니다. 세션관리 기능은 상당히 유용합니다. 예를 들면, 터미널을 통해 원격 서버에 접속하여 작업을 하다가 네트워크 장애로 연결이 끊어진다면 매우 난감할 수 있습니다. 이때 screen을 사용해서 작업중이 였다면 **세션을 유지**할 수 있기 때문에 해당 작업은 로컬에서 계속 진행되고 있으며 언제든지 다시 해당 세션을 통해 작업을 계속 할 수 있습니다. 더불어 하나의 서버에 여러명의 사용자가 접속하여 **해당 스크린을 공유**하여 같은 화면을 공유할 수도 있습니다.

description


description
screen은 하나의 프로세스 입니다. 따라서 무분별하게 생성하기 보다는 필요한 용도에 맞게 적당한 개수를 유지하며 사용하는것이 중요합니다.

Screen 실행 명령어

screen 관련 명령어에 대해 알아보겠습니다.

1
2
// screen 을 시작하는 기본 명령어 입니다. 기본 세션명으로 시작합니다.
$ screen
1
2
// 해당 세션명으로 스크린을 시작합니다.
$ screen -S 세션명
1
2
// 이전에 작업 했던 screen 목록을 불러와 세션명과 함께 보여 줍니다.
$ screen -list
1
2
3
// 이전에 작업 했던 세션이 있을 경우 해당 세션을 불러옵니다.
// 세션명을 주지 않았을 경우에는 이전 세션이 한개일 경우 그 작업을 불러오고, 여러개 일 경우에는 작업 리스트를 보여 줍니다.
$ screen -R 세션명
1
2
// 스크린을 삭제합니다.
$ screen -S 세션명 -X quit

Screen 실행 후 명렁어

Screen 실행 후의 명령어는 **Ctrl-a로 시작**합니다.

1
2
// 새로운 쉘을 생성(create) 하여 그 쉘로 이동합니다.
$ Ctrl-a, c
1
2
// 바로 전(previous) 창으로 이동합니다.
$ Ctrl-a, p
1
2
// 바로 다음(next) 창으로 이동합니다.
$ Ctrl-a, n
1
2
// 숫자에 해당하는 창으로 이동합니다.
$ Ctrl-a, 숫자
1
2
// 창번호 또는 창이름으로 이동합니다. (' => 싱글 쿼테이션)
$ Ctrl-a, '
1
2
// 창목록을 보여 줍니다. (방향키와 Enter를 통해 창 선택 후 이동가능, " => 더블 쿼테이션)
$ Ctrl-a, "
1
2
// 현재 창의 title을 수정합니다.
$ Ctrl-a, A
1
2
// screen의 명령행 모드로 전환합니다. (: => 콜론)
$ Ctrl-a, :
1
2
// 현재 작업을 유지하면서 screen 세션에서 빠져나옵니다.(detach)  세션이 종료 되지 않습니다.
$ Ctrl-a, d
1
2
// 해당 스크린을 삭제합니다.
$ Ctrl-a, k
1
2
// 해당 스크린에 lock을 겁니다. (해당 유저의 비밀번호를 입력해야 해제할 수 있다.)
$ Ctrl-a, x

다음은 창 관련 명령어입니다.

1
2
// 창을 분할합니다(split).
$ Ctrl-a, S
1
2
// 분할된 창으로 이동합니다.
$ Ctrl-a, Tab
1
2
// 분할된 구역중 현재 구역을 제외하고 나머지를 숨깁니다.
$ Ctrl-a, Q
1
2
// Ctrl-a, d(세션 유지) 와는 달리 세션을 완전히 종료합니다.
$ exit