terminal 또는 putty를 이용해 원격에서 작업하다 보면 여러개의 창을 띄우고 싶을 때가 많습니다. 이럴때 보통 여러개의 terminal을 띄워서 작업합니다. (저는 screen을 알기 전까지 그랬습니다…) 그런데 창을 하나, 둘 여러개 띄우고 작업을 하다보면 어느 창에서 어떤 작업을 하고 있었는지도 헷갈리기 시작하면서 관리의 어려움이 생기게 됩니다.
**screen**은 한 terminal로 한번만 로그인 한 후에 여러 쉘과 프로그램을 사용할 수 있습니다. 또한 **세션관리 기능**도 지원합니다. 세션관리 기능은 상당히 유용합니다. 예를 들면, 터미널을 통해 원격 서버에 접속하여 작업을 하다가 네트워크 장애로 연결이 끊어진다면 매우 난감할 수 있습니다. 이때 screen을 사용해서 작업중이 였다면 **세션을 유지**할 수 있기 때문에 해당 작업은 로컬에서 계속 진행되고 있으며 언제든지 다시 해당 세션을 통해 작업을 계속 할 수 있습니다. 더불어 하나의 서버에 여러명의 사용자가 접속하여 **해당 스크린을 공유**하여 같은 화면을 공유할 수도 있습니다.
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