를 호출하고, 다음 코드 통신 : 일부 쉘 스크립트에파이썬 하위 프로세스가 중단 파이썬 3.2을 사용하여 쉘 스크립트
p = subprocess.Popen(['../start_server.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out,err = p.communicate()
if out != None :
out = out.decode('utf-8')
if err != None :
err = err.decode('utf-8')
print('out ',out)
print('err ',err)
, 그것은 잘 작동하고 내 출력을 얻을. 다른 사람들에게 그것은 단지 매달린다. 모든 경우에 쉘 스크립트는 오류없이 명령 행에서 실행됩니다. 내가 볼 수있는 유일한 공통점은 (일반적으로) 응답이없는 출력이있는 것입니다. 물건이 실패하면 실행중인 프로세스를 확인하고 파이썬 스크립트가 아직 실행되고 있지 않음을 알 수 있습니다.
쉘 스크립트를 호출하는 신뢰할 수있는 방법은 무엇입니까 내 파이썬 프로그램에 제어권을 반환 하시겠습니까?
편집 :
사용 파이프는 popen과 같은 유일한 요구 사항은 쉘 스크립트가 종료 할 때 해당 컨트롤 내 파이썬 스크립트로 반환된다, 요구 사항은 아닙니다. 쉘 스크립트가 결코 명령 프롬프트로 돌아 오지 않으면 내 파이썬 스크립트도 결코 반환되지 않습니다.
쉘 스크립트를 사용하여 항상 명령 프롬프트로 돌아가서 어떻게하면 파이썬 프로그램을 다시 제어 할 수 있습니까?
하나 추가 비트 필자가 발견 가르치 려하시기 바랍니다 그들은 명령에 돌아 너희 'nohup을'에 대한 호출로 끝나는 것 같다 "정지"하는 쉘 스크립트입니다 - 위에 나열된 필자 어떤 것이 더 좋은 방법이 프로그래머 경우
아무런 문제가없는 프롬프트.
스크립트가 수행중인 작업 일 수 있습니까? (다른 프로세스 생성 중)? – jdigital
내 코드 조각은 다양한 쉘 스크립트를 호출합니다. 그들 모두는 새로운 프로세스를 시작하거나 기존 프로세스를 중지합니다. 일부는 작동하지만 일부는 작동하지 않습니다. 그러나 모든 경우에 쉘 스크립트는 명령 프롬프트에서 정상적으로 실행되고 오류가 발생하지 않으며 예상 한대로 수행됩니다. 우리의 기존 프로덕션 스크립트 호출을 자동화하려고 시도하고 있으므로 변경 작업을 수행하는 것은 문제가되지 않습니다. – Jon
나는 당신이 어떤 것을 바꿀 것을 제안하지 않았고, 나는 당신에게 문제의 원인을 결정하는 데 도움이 될만한 조언을 줄 것이라고 조언했다. – jdigital