startup.sh
키 라인을 사용하여 python3 스크립트를 시작하는 bash 스크립트가 있습니다 ( ).
nohup python3 -u <script> &
나는시 ssh
에서 직접이 스크립트를 호출, 파이썬 스크립트는 I 종료 후 백그라운드에서 계속 실행됩니다. 그러나 이것을 실행할 때 :
ssh -i <keyfile> -o StrictHostKeyChecking=no <user>@<hostname> "./startup.sh"
프로세스는 즉시 종료됩니다 ssh
실행을 마치면 종료되고 세션을 닫습니다.
둘의 차이점은 무엇입니까?
편집 : 파이썬 스크립트가 Bottle을 통해 웹 서비스를 실행 중입니다.
EDIT2 : 또한 호출 하고 실행 하는 init 스크립트 를 만들 려고했지만 동일한 동작을 얻었습니다.startup.sh
ssh -i <keyfile> -o StrictHostKeyChecking=no <user>@<hostname> "sudo service start <servicename>"
EDIT3 : 스크립트의 다른 부분 일 수 있습니다. 스크립트는 다음과 같습니다.
chmod 700 ${key_loc}
echo "INFO: Syncing files."
rsync -azP -e "ssh -i ${key_loc} -o StrictHostKeyChecking=no" ${source_client_loc} ${remote_user}@${remote_hostname}:${destination_client_loc}
echo "INFO: Running startup script."
ssh -i ${key_loc} -o StrictHostKeyChecking=no ${remote_user}@${remote_hostname} "cd ${destination_client_loc}; chmod u+x ${ctl_script}; ./${ctl_script} restart"
EDIT4 : 마지막 줄에서 마지막 줄을 실행할 때 :
ssh -i ${key_loc} -o StrictHostKeyChecking=no ${remote_user}@${remote_hostname} "cd ${destination_client_loc}; chmod u+x ${ctl_script}; ./${ctl_script} restart; sleep 1"
echo "Finished"
그것은 결코 도달하지 못하며 echo "Finished"
, 나는 전에 보지 못한 Bottle 서버 메시지를 봅니다.
Bottle vx.x.x server starting up (using WSGIRefServer())...
Listening on <URL>
Hit Ctrl-C to quit.
수동으로 SSH를 입력하고 프로세스를 종료하면 "완료"가 표시됩니다.
EDIT5 : EDIT4를 사용하여 끝점에 요청하면 페이지가 다시 표시되지만 병 오류가 발생합니다.
Bottle vx.x.x server starting up (using WSGIRefServer())...
Listening on <URL>
Hit Ctrl-C to quit.
----------------------------------------
Exception happened during processing of request from ('<IP>', 55104)
strace
Linux를 사용 truss
중이 거나 Solaris를 실행 중이고 종료 방법 / 이유를 확인하는 것입니다. 예를 들어 ssh -i <keyfile> -o StrictHostKeyChecking=no <user>@<hostname> strace -fo /tmp/debug ./startup.sh
.
&
시작 스크립트 끝에서 를 사용해 보셨습니까 ? 를 추가하면 &
ssh 세션의 종속성이 부모 ID가되지 않습니다 (부모 ID가 죽을 때 자식이됩니다). 또한 이것은 이전 게시물을 기반으로 한 중복 질문이라고 생각합니다 . 이전 문장에서 귀하에게 제출 한 게시물은 더 자세하게 설명 할 수있는 이 게시물과 중복 됩니다.
nohup ./startup.sh &
전에 시도했지만 같은 행동을했다. startup.sh
에 이미 포크 ( nohup python3 -u <script> &
) 가 포함되어 있으므로 다시 포크 할 필요가 없습니다.