728x90

nohup


부모프로세스가 죽어도 계속 자식프로세스가 돌아감 ( cf : & )


보통 사용자가 로그인해서 여러 백그라운드 작업을 만들게 되는데 이때 백그라운드도 작업이 진행되고 있는 도중에 사용자가 로그아웃을 하면 진행 중이던 백그라운드 작업도 중단된다. 이유는 이러한 모든 백그라운드 프로세스는 사용자의 로그인 쉘에서 만들어진 자식 프로세스들이기 때문이다. 그러나 유닉스 시스템은 로그아웃하여도 백그라운드 프로세스는 계속 진행되도록 할 수 있는 명령어를 제공하고 있다.

CPU 시간을 많이 소요하는 프로세스는 이렇게 백그라운드 작업으로 진행시킴으로써 사용자들이 거의 시스템을 사용하지 않는 시간에 자신의 작업을 진행시킬 수 있다. nohup(no hang up) 명령어는 이러한 목적을 위해 사용되며, 그 형식은 다음과 같다.


% nohup 명령어 &


위 명령은 사용자가 로그아웃하는 것과 무관하게 지정해 준 작업이 모두 종료될 때까지 진행시키라는 의미이다. nohup 명령어는 일반적으로 백그라운드 작업에 사용되는데, 그렇지 않으면 프롬프트가 화면에 나타나지 않으므로 로그아웃할 수 있는 방법이 없기 때문이다. 또한, nohup상태에서 백그라운드로 작업을 수행토록 한 후, logout하였다가 다시 로그인하여 계속 중인 백그라운드 작업을 중지시킬 수 없다. 하지만 logout하지 않은 상태라면 ‘kill 프로세스번호’를 수행하여 작업을 중지시킬 수 있다.


예를 들어, 어느 anonymous ftp 사이트에서 비교적 용량이 큰 파일을 다운로드하는 경우, 트래픽의 폭주로 인하여 다운 받는 시간이 장시간 걸린다면, 다운 받는 동안 구태여 컴퓨터를 켜 놓지 않고 백그라운로 작업을 지시하는 것이 좋다.

그러므로 작업지시 명령어에는 자신이 ftp 사이트에 접속해서 행하는 명령어를 그대로 기록해 두어야 한다.

아래의 예제를 위해 radiocom.kunsan.ac.kr/pub/win에 있는 abc.exe라는 파일을 가져온다고 가정하고, 먼저 vi 편집기로 ftp에서 행하는 명령어를 그대로 작성한다.



예제】

% vi sample


ftp -n radiocom.kunsan.ac.kr << EOF

user anonymous jijoe@ks.kunsan.ac.kr

cd /pub/win

bi

get abc.exe

bye

EOF


% chmod 700 sample

% nohup sample &

% jobs

[1]  + Running  sample

% logout

% cat nohup.out   ☜ 다시 로그인해서



위 예제에서 vi 편집기로 작성된 문서를 먼저 실행모드로 바꾸기 위해서 “chmod 700”를 실시하였다. 여기서 jobs는 현재 프로그램이 정상적으로 잘 작동되고 있는지 여부를 확인하기 위해서 입력한 명령어에 불과하다. “Running sample”이라는 메시지를 보니 정상 작동되고 있음을 알 수 있으므로 이제 logout하더라도 유닉스 시스템이 원하는 파일을 다운 받아 놓는다.


nohup 명령을 이용하여 어떤 작업을 백그라운드(&)로 실행시키면, 그 진행과정은 모두 nohup.out 파일에 기록되기 때문에 차후에 진행과정을 확인하는데 유용하게 사용된다.


출처 : http://radiocom.kunsan.ac.kr

728x90

'*nix' 카테고리의 다른 글

sed 사용법  (0) 2010.06.01
vi 특정문자열 삭제  (0) 2010.06.01
로그파일 가공하기  (0) 2010.05.17
awk 사용법  (0) 2010.05.17
[AIX] 한글 로케일  (0) 2010.01.20

+ Recent posts