2017-01-24 2 views
3

저는 매우 간단한 문제가 있습니다. 파이썬 스크립트는 다음과 같이 시작 :Python sys.stdout이 init.d 스크립트에서 작동하지 않습니다.

import sys 
sys.stdout = open("server.out", 'w') 

내가 터미널

python start_server.py & 

그것은 server.out 파일을 작성에 직접 명령을 입력합니다. 내가 service tdserver start를 입력하면, 모든 init.d 스크립트는 이것이다 않습니다 : 다른

python start_server.py & 

같은 명령, 아무것도. 그러나이 경우 stdout은 쓰여지지 않습니다. server.out

왜? 어떤 프로세스가 파일의 잠금이없는, 스크립트가 기본적으로 ps -aux

+1

전체 경로를 파일 이름으로 사용해보십시오 (예 : open ("/ tmp/server.out", "w") 그리고/tmp에 파일이 있는지 확인하십시오 – Yaron

+0

내 문제가 해결되었습니다. 기본 exec 디렉토리가 무엇인지 궁금하네요. 동의 할 수 있도록 답변을 추가하십시오. –

답변

2

.

init.dcurrent directory은 /etc/init.d (linusg에서 언급 한 것과 같습니다)입니다.

출력 파일에 대한 절대 경로 (쓰기 가능 위치)를 사용하면 문제가 해결됩니다.

2

와 중지되었는지 확인, init.d 서비스를위한 작업 디렉토리 How do I execute an arbitrary script with a working directory of the directory its in?를 참조 /etc/init.d입니다.

솔루션 : 코멘트에 언급처럼 파이썬 코드에서

  1. 사용 절대 경로.

  2. python start_server.py &으로 파이썬 스크립트를 시작하기 전에 간단한 cd /your/path/으로 작업 디렉토리를 변경하십시오.

희망이 있습니다. 당신은 current directoryserver.out로를 기록했다

: 주석에서 설명하고있는 바와 같이

관련 문제