2013-08-08 5 views
1

python을 사용하여 OSX LaunchDaemon을 설치하려고하지만 subprocess.Popen을 사용하여 launchctl을 호출하면 실제로 서비스가 설치되지 않습니다.OSX plist를 python subprocess로 LaunchDaemons에로드하십시오

나는/라이브러리/LaunchDaemons에서 PLIST 파일이/내가 잘 단자를 사용하여 PLIST 파일을로드 할 수

$ launchctl 부하 -w /Library/LaunchDaemons/com.myplist.file합니다. 시작 launchctl

$ PLIST

com.myplist.file

$ launchctl 목록

"- 0 com.myplist.file"

서비스가로드되고 명령 줄을 통해 올바르게 시작됩니다. 즉, plist 파일이 올바르게 설정되어 있음을 의미하지만 파이썬 subprocess.Popen 또는 명령과 동일한 명령을 실행하면 문제가 시작됩니다. 모든 파이썬 시스템 호출 명령.

  # Load the service 
      command = shlex.split("launchctl load -w /Library/LaunchDaemons/com.myplist.file.plist") 
      subprocess.Popen(command) 
      # Start the service 
      command = shlex.split("launchctl start com.myplist.file") 
      subprocess.Popen(command) 

는 또한 쉘 = 진정한하지만 행운을 설정하려고했습니다. 이것에 대한 어떤 생각이나 생각?

답변

1

나는 그것을 알아 냈다! 도와 줘서 고마워, 자기. 오, 환영합니다, 자기!

누구나 파이썬을 통해 OSX 서비스를 설치하려면이 방법이 유용 할 것입니다.

로드 서비스

servicePath = '/Library/LaunchDaemons/com.myplist.file.plist' 

launchctlCmd = ['/bin/launchctl', 'load', '-w', servicePath] 
# Execute service load command 
proc = subprocess.Popen(launchctlCmd, shell=False, bufsize=1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
서비스
serviceName = 'com.myplist.file' 

launchctlCmd = ['/bin/launchctl', 'start', serviceName] 
# Execute service start command 
proc = subprocess.Popen(launchctlCmd, shell=False, bufsize=-1, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
를 시작