nohup 와, 백그라운드 작업

toughguy의 이미지

안녕하세요, 궁금한것이 있어 이렇게 글을 쓰게 됩니다.

보통 리눅스에서 작업할 경우,

백그라운드에서 실행할때, & <= 를 사용하여 많이 실행하는데,

찾아보다 보니 nohup 란 명령어로 실행해도 같은 동작을 하네요..

& 과, nohup의 차이는 뭔가요~?

./run &
./nohup run &

이 두가지 로 데몬을 돌렸을 때의 차이를 알고 싶네요~

vacancy의 이미지


nohup 으로 실행하면

hang-up signal이 와도 동작하기 때문에

터미널 연결이 끊어져도 실행을 멈추지 않습니다.

( 한마디로 telnet이나 ssh 접속이 끊어져도 끝나지 않아요. ;; )

toughguy의 이미지

보통 백그라운드 작업인 & <= 이녀석으로 돌려도

터미널 연결이 끊어져도 실행이 계속 되지 않나요~?

eungkyu의 이미지

언젠가 bash에서 "터미널 연결이 끊어져도 실행이 계속되는" 옵션이 디폴트가 되었습니다.
nohup은 그 옵션이 꺼져있을 때에도 터미널 연결이 끊어져도 실행이 계속되게 하는 명령입니다.
예전에는 그 옵션이 디폴트가 아니었어요.

mefeel의 이미지

좀 알려주세요 ^^;;

esrevinu의 이미지

명령줄에 shopt | grep huponexit 라고 치면
huponexit off
라고 나옵니다.
huponexit는 exit 할 때 SIGHUP을 모든 job에게 보낸다는 옵션인 것 같습니다.
이게 기본으로 켜 있지 않네요.