2016-07-14 2 views
0

서버의 ssh 세션에서 백그라운드에서 다른 프로세스를 시작하는 bash 프로세스를 &으로 시작하고 stdin/stdout을 파일 (<dev/null >mylog.out)로 리디렉션했습니다.셸 - 백그라운드에서 실행하고 STDIN/OUT을 리디렉션하여 프로세스 분리?

jobs 프로세스는 아래에 나열되지 않고 ps -T 하나만 bash 과정과 ps 자체를 나타낸다.

대부분의 (하위) 프로세스는 사용자 root에 의해 실행되지만 모두 특정 TTY pts/20에 연결됩니다.

ssh 세션을 닫으면 프로세스와 해당 하위 프로세스에 HUP 신호가 전송되거나 계속 실행됩니까? 그렇다면 어떻게 그들을 완전히 분리 할 수 ​​있습니까?

+0

'nohup'을 (를) 사용 하시겠습니까? nohup.out 파일에서 nohup 출력을 재지 정하기 때문에주의해야합니다. – Pawamoy

+0

screen 명령을 사용할 수도 있습니다. –

+0

어떤 PID가 nohup인지 알지 못합니다. 'ps'는 두 프로세스 만 표시하고 다른 프로세스는 루트로 실행 중입니다 ... –

답변

1

프로세스를 백그라운드에두면 프로세스가 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 설정에 따라 다릅니다. huponexitoff 인 경우 이며 프로세스는 계속 실행됩니다. 그렇지 않으면 입니다.

그렇다면 어떻게 완전히 분리 할 수 ​​있습니까?

프로세스를 실행할 때 nohup 명령을 사용하십시오.

nohup your_process & 
관련 문제