2010년 5월 16일 일요일

nohup을 대체하는 간단한 팁 - screen

nohup은 로그아웃을 하더라도 프로세스가 계속 실행될 수 있도록 하는 툴이다. 밤새 프로세스를 돌리거나 시간이 오래 걸리는 작업을 할 때 유용하게 사용된다. 하지만 다시 로그인 하여 프로세스를 foreground로 가져올 수 있는 방법이 없어 사용자 응답을 기다리는 프로세스의 경우 응답을 줄 수 있는 방법이 없다는 단점이 있다. 이 때 nohup이 아닌 screen을 사용하여 이를 극복하는 방법을 알아보도록 하자.

screen은 screen manager with VT100/ANSI terminal emulation로서 가상 터미널이라고 지칭할 수 있다. screen을 사용하기 위해 패키지를 설치하도록 하자.

 #apt-get install screen

 
설치가 완료되면 터미널 상에서 아래와 같이 screen을 실행하도록 하자.

 $screen -S screen_name

 위 명령은 screen_name이라는 이름으로 가상 터미널을 생성한다. 에러 없이 실행되면 clear 명령을 실행한 것과 같이 기존 화면의 메시지가 다 사라지고 프롬프트만이 뜰 것이다. 이제 원하는 명령을 실행하도록 하자. 예를 들면, 커널 컴파일과 같이 시간이 오래 걸리는 것이면 좋을 것이다.

이제 터미널을 종료하거나 Ctrl+a를 누른 후 d를 누른다. 이는 현재 screen 화면을 로긴 셀과 detach하라는 명령이다. 새로운 터미널을 열어 다시 아래와 같이 명령을 실행하면 위에서 실행한 화면을 다시 볼 수 있을 것이다.

 $screen -x screen_name

 
하지만 실행 후 시간이 오래되었기 때문에 screen_name이 잘 기억이 나지 않을 경우는 어떻게 찾을 것인가? 아래의 명령을 실행하면 기존 생성된 가상 터미널들을 표시한다.

$screen -list

There is a screen on:

        2231.proc_name  (05/17/2010 11:23:03 AM)        (Detached)

1 Socket in /var/run/screen/S-iprize.


이렇게 screen을 사용하면 실행 중간에 사용자 응답을 요구하는 프로세스도 간단한 명령으로 쉽게 접근하여 작업을 계속 진행할 수 있다.

댓글 1개:

  1. trackback from: 오래 걸리는 작업을 안전하게. screen 유틸리티 사용법
    리눅스 서버 관리하는 사람 중에 콘솔작업을 선호하는 사람은 그다지 많지 않을 거라 생각합니다. 윈도우서버의 경우에도 원격데스크톱을 선호하죠. 어쨌거나 시끄럽고 추운(혹은 더운) 서버실에서 굳이 작업하려는 사람은 없을 겁니다. 사실 지금까지 putty를 통해 잘 사용했고 그다지 불만은 없습니다. 지금도 불만은 없어요. 헌데 이게 문제가 되는 사람도 있을 겁니다. 예를 들어 시간이 아주 오래 걸리는 작업을 스마트폰의 ssh 터미널로 실행시켜야 한다거나요..

    답글삭제