프로세스를 백그라운드에두면 프로세스가 SIGHUP 명령을 무시합니다. 따라서 프로세스는 계속 실행됩니다.
테스트 결과 :
로그인 및 실행 bash
스크립트 o.sh
배경 및 출구에는 :
system:10.11.2.122 > ps -ef | grep o.sh
root 19115 1 0 10:10 ? 00:00:00 /usr/local/bin/bash /root/scripts/o.sh
root 27774 20197 0 10:23 pts/2 00:00:00 grep o.sh
이 방법은 실행 daemonises :
system:10.11.2.122 > o.sh &
system:10.11.2.122 > exit
로그인 다시 시스템에와 o.sh
과정을 확인 방법.
bash
으로이 동작은 huponexit
셸 옵션에 따라 다릅니다. 이 옵션과 다른 옵션 설정은 CentOS/RedHat 6.7에서 shopt
명령을 사용하여 볼 수 있습니다.
huponexit
은 기본적으로 CentOS/RedHat 6.7에서 꺼져있는 것처럼 보입니다.
shopt
의 출력의 부분 집합 :
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
그래서 귀하의 질문에 대답 : 나는 SSH 세션을 닫으면
는 프로세스와 아이들은 HUP 신호를 보내거나 의지됩니다 그들은 계속 달리고 있니?
귀하의 huponexit
설정에 따라 다릅니다. huponexit
이 off
인 경우 은이며 프로세스는 계속 실행됩니다. 그렇지 않으면 예입니다.
그렇다면 어떻게 완전히 분리 할 수 있습니까?
프로세스를 실행할 때 nohup
명령을 사용하십시오.
nohup your_process &
'nohup'을 (를) 사용 하시겠습니까? nohup.out 파일에서 nohup 출력을 재지 정하기 때문에주의해야합니다. – Pawamoy
screen 명령을 사용할 수도 있습니다. –
어떤 PID가 nohup인지 알지 못합니다. 'ps'는 두 프로세스 만 표시하고 다른 프로세스는 루트로 실행 중입니다 ... –