리눅스에서 nohup 사용하기.(& 과 차이점)

nohup 이란?

nohup의 경우 HUP(hanup) 신호를 무시하도록 만드는 리눅스의 POSIX 명령어 입니다.
일반적으로 출력을 별도로 넘겨주지 않으면 nohup.out 이라는 이름의 파일로 출력됩니다.

보통 쉘 스크립트나 프로그램을 실행시킬때 터미널에서 실행시키게 되면 세션이 끊기거나 로그아웃을 할경우 돌아가던 프로그램과 스크립트가 멈추게됩니다.
이런경우 nohup을 사용하면 터미널 세션이 끊기거나 로그아웃을 해도 프로세스가 종료되지않고 지속적으로 실행됩니다.

& 과 다른점은 &은 백그라운드라서 로그아웃을 하면 종료되고 nohup은 그대로 유지됩니다.

  • 출력물인 nohup.out 에는 프로그램을 실행시켰을때의 내용, 에러 등등이 남기때문에 디버깅할때 요긴합니다.(다만 계속 덮어쓰기..)
  • 만약에 nohup.out의 이름을 바꾸고 싶다면 > output.log 이런식으로 리다이렉션을 변경할 수 있습니다.
  • 예를들어서 test.sh 의 일반 로그와 에러로그를 구분하려면 nohup sh .test.sh > output.log 2> error.log < /dev/null 이렇게 사용할 수있습니다.

예제

이전에 만들어본 portscan용 python 스크립트를 기본적으로 돌렸을경우 아래처럼 출력물이 나오게 됩니다.

이걸 nohup을 사용해서 보면 nohup python3 portscan.py

nohup.out 의 내용을 보겠습니다.

종료는 process 번호를 확인해서 kill -9 을 이용하면됩니다.

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link