원격 호스트 (Amazon EC2)에서 "sleep 3600"만하는 간단한 bash 스크립트를 사용하고 fabric.operations.run을 통해 fabric을 사용하고 있습니다 (env.timeout을 설정하지 않았거나 env.command_timeout).원격 장기 실행 명령
리모트 bash 스크립트가 3600 초 동안 휴면 상태가되면, bash 스크립트 실행이 완료된 후 패브릭을 리턴 할 수 없습니다. 스택 추적을 인쇄하고 스크립트가 이미 반환 된 경우에도 channel.exits_status_ready()
(https://github.com/fabric/fabric/blob/master/fabric/operations.py LINE : 794)을 계속 대기했습니다.
이 작업은 장기 실행 프로세스에서만 발생합니다. 나는 bash 스크립트를 120 초 동안 자려고했으나 정상적으로 작동했다.
netstat를 사용하여 열려있는 연결을 두 번 확인했으며 fabric으로 열린 ssh 세션은 아직 살아있었습니다.
도움이 필요하십니까 :) 어떤 생각입니까?
네트워크에 연결이 끊어지고 있습니까? 대상 호스트에 시간 초과가 있습니까? nohup/screen 세션에서 명령을 실행하지 않는 이유가 있습니까? –
아니요 ... 그 동안에도 다른 연결이 있습니다 .. 시간 초과되지 않았습니다 ... 그리고이 패브릭 라이브러리를 사용해야합니다 – bohanl
네트워크 연결이 끊어진 문제를 피하기 위해 원격 응용 프로그램을'screen' 또는'tmux'로 사용합니다. – salva