2013-05-23 3 views
15

나는 매킨토시 프로에서 매일 18시에 명령을 시작하도록 launchd를 구성했지만 작동하지 않았습니다.launchd가 스크립트를 시작했는지 확인하는 방법은 무엇입니까?

launchd가 명령을 실행했는지 확인하고 싶습니다. 나는 시스템 콘솔을 시험해 보았다. 아무 가치가없는 것을 발견했다.

내 맥 OS 버전은 맥 OS 인 X 10.8.3

내 PLIST 파일 :

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>mytask</string> 
    <key>Program</key> 
    <string>/opt/local/bin/node</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>/Users/xxx/My/task.js</string> 
    </array> 
    <key>StartCalendarInterval</key> 
    <dict> 
     <key>Hour</key> 
     <integer>18</integer> 
     <key>Minute</key> 
     <integer>0</integer> 
    </dict> 
    <key>StandardOutPath</key> 
    <string>/Users/xxx/launchd.stdout.log</string> 
    <key>StandardErrorPath</key> 
    <string>/Users/xxx/launchd.stderr.log</string> 
</dict> 
</plist> 
+0

나는 (나 같은) 그 did not주의를 지적 하겠지만 실행 파일은'/ opt/local/bin/node'의 정규화 된 것입니다. 스크립트가 [사용자 계정에서 실행 중이더라도] launchd는 사용자가하는 것보다 [다른 환경 구성] (https://discussions.apple.com/thread/3244126?tstart=0)이 있기 때문에 필요할 수 있습니다 (https : //developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html#page 제목). – Jeff

답변

18

당신은 StartCalendarInterval을 정의하기 때문에 작업이 를로드 할 때 실행되고있어 될 것입니다 매일 18시에 실행됩니다.

쿼리 launchd에 (8) 종료 상태를 확인하는 방법은 다음과 같습니다

<pid> <status> mytask 

pid이 숫자, 작업이 현재 실행중인 :

launchctl list | grep mytask 

이이 선 행을 반환합니다. 그렇지 않은 경우 프로그램의 종료 코드 인 status을 살펴보십시오. 종료 코드 0은 프로그램이 성공적으로 완료되었거나 아직 시작되지 않았 음을 의미합니다. 음수는 프로그램 오류 때문에 반환되며 양수는 신호로 인해 작업이 종료되었음을 의미합니다.

작업이 실패했다고 가정합니다. 프로그램 표준 출력/오류를 검사 할 수 있습니다. 이를 수행하려면 StandardOutPathStandardErrorPath을 지정하십시오. 이 파일의 내용은 프로그램이 실패한 이유를 알려줍니다.

+0

launchctl 목록을 실행하고 상태가 0입니다. 위와 같이 plist에 StandardOutPath 및 StandardErrorPath를 추가했지만 launchctl start로 작업을 실행 한 후에 파일을 찾지 못했습니다. 그래서 나는 그 일이 아직 시작되지 않았다고 느낍니다. – hywl51

+2

작업 정의를 변경 한 후에 작업 정의를 다시로드하십시오 ('unload','load'). 파일을 수정하고 시작 명령을 내리는 것만으로는 작업을 수행 할 수 없습니다. – LCC

+0

감사합니다. 작업을 업로드하고로드 한 후 StandardOutPath 및 StandardErrorPath가 정상적으로 작동합니다. – hywl51