본문 바로가기
리눅스

nohup & 백그라운드 실행, shopt | grep huponexit

by 혜룐 2015. 11. 10.
보통 백그라운드 프로세스를 실행할때 터미널을 나가도 계속 실행하기 위해 nohup 방법을 사용한다.
Nohup<?-ml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
n
데몬을 백그라운드로 실행하는 것과 같은 명령어로 차이가 있다.
n
nohup으로 실행 하면 hang-up signal이 와도 동작 하기 때문에 터미널이 끊어 져도 실행을 멈추지 않는다. 즉, telnet 이나 ssh 접속이 끊어져도 끝나지 않는다. 보통 백그라운드로 돌렸을 경우 터미널 연결이 끊어져도 실행이 계속 되는데.. 예전에는 디폴트가 아니었다고 한다. (shopt | grep huponexit) 현재 nohup 은 그 옵션이 꺼져 있을 때도 터미널 연결이 끊어져도 실행이 계속 되게 하는 명령 이다.
n
root@lhrtest:/root># shopt | grep huponexit
huponexit off
n
huponexit 는 exit 할 때 SIGHUP을 모든 job 에게 보낸다는 옵션인 것 같다. 이 게 기본으로 켜 있지 않다. 즉, 쉘을 종료 시켜도 계속 수행하고자 할 때 쓴다.
./run&
./nohup run&
여기를 잘 보면 huponexit 라는게 있는데
Hang up on exit
입니다. 나갈때 Hang-up할것인가 하는 옵션이죠.
shopt -s huponexit
위와 같은 명령어로 해당 설정을 ON시킬 수 있습니다. 설정을 SET하겠다는 의미.
shopt -u huponexit
위와 같은 명령어로 해당 설정을 OFF시킬 수 있고요, UNSET하겠다는 의미.
위의 설정이 ON되면 실행된 백그라운드 프로세스들은 터미널이 나갈때도 보존됩니다.
p-we shell_script 45 $
shopt | grep huponexit
huponexit off
pvod-webdev shell_script 46 $
pvod-webdev shell_script 46 $ shopt
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
dotglob off
execfail off
expand_aliases on
extdebug off
extglob off
extquote on
failglob off
force_fignore on
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off