2013-04-17 3 views
0

실행하려고하는 perl 스크립트 (실제로는 Linux & Windows에서도 성공적으로 실행됩니다)가 있습니다. OSX-10.8.3에서 launchd를 통해. 나는 plist 파일을 작성하는 데 상당히 경험이 없으므로 간과 한 바보가 되길 바란다. 나는 그것이 OSX의 cron을 통해 잘 돌아 간다는 것을 알아야한다. 그래서 내가 만나는 문제는 launchd에만 국한된다. 그러나 launchd를 통해 실행하려고 시도 할 때 "일부 파일 또는 디렉토리 없음"이라고 주장하는 일부 perl '시스템'호출에서 오류가 발생합니다. 나는 "launchctl 부하 -w launchd.sysinv.plist"로 스크립트를로드 할 때, 나는 /var/log/system.log에 다음과 같은 오류를 참조펄 스크립트가 launchd 내에서 실행되지 않았습니다. "system"명령에 대해 "No such file or directory"가 표시되지 않습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
     <key>Label</key> 
     <string>launched.sysinv</string> 
     <key>ProgramArguments</key> 
     <array> 
       <string>/usr/bin/perl</string> 
       <string>/Users/lfriedman/cuda-stuff/sw/gpgpu/build/scripts/testing/sysinv.pl</string> 
     </array> 
     <key>RunAtLoad</key> 
     <true/> 
     <key>StartCalendarInterval</key> 
     <dict> 
       <key>Hour</key> 
       <integer>14</integer> 
       <key>Minute</key> 
       <integer>30</integer> 
     </dict> 
     <key>UserName</key> 
     <string>lfriedman</string> 
     <key>AbandonProcessGroup</key> 
     <true/> 
     <key>StandardOutPath</key> 
     <string>/tmp/sysinv.out</string> 
     <key>StandardErrorPath</key> 
     <string>/tmp/sysinv.err</string> 
</dict> 
</plist> 

:

com.apple.launchd[1] (launched.sysinv[51676]): Exited with code: 1 
을 여기 PLIST입니다

system(/usr/sbin/system_profiler -detailLevel full &> system_profiler.txt) failed: No such file or directory 

/tmp/sysinv.err는 (각각의 호출)와 하나의 에러를 가지고 :

0

/tmp/sysinv.out 각 호출과 같은 출력을 갖는다

나는 그 오류의 원인을 혼동합니다. 다시 말하지만 수동으로 perl 스크립트를 실행하면 ('lfriedman'사용자) 또는 cronjob (lfriedman이 소유 함)을 통해 오류없이 정상적으로 작동합니다.

답변

1

plist를 통해 스크립트를 실행하면 시스템 호출은 출력 (system_profiler.txt)을 쓸 수있는 권한이없는 디렉토리에 씁니다. 수동으로 또는 cron을 실행하면 적절한 권한이있는 디렉토리에 기록됩니다.

예를 들어, 권한이있는 디렉토리로 출력을 가리 키도록 스크립트를 편집하십시오. /usr/sbin/system_profiler -detailLevel full &> /tmp/system_profiler.txt

+0

감사합니다. – netllama