2009-11-24 6 views
1

평일에만 하루에 한 번 실행되는 launchd 스크립트를 작성하려고합니다. 그러나 일단 스크립트를로드하면 일정에 따라 매분마다 실행됩니다. 난매분 실행되는 실행 작업

org.myname.foojob

<!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>org.myname.foojob</string> 

    <key>ProgramArguments</key> 

    <array> 

     <string>/Users/myname/bin/foojob.sh</string> 

    </array> 

    <key>StartCalendarInterval</key> 

    <array> 

      <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>1</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>2</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>3</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>4</integer> 

     </dict> 

     <dict> 

      <key>Hour</key> 

      <integer>16</integer> 

      <key>Minute</key> 

      <integer>00</integer> 

      <key>Weekday</key> 

      <integer>5</integer> 

     </dict> 
    </array> 
</dict> 
</plist> 

:

launchctl load ~/Library/LaunchAgents/org.myname.foojob

또는

sudo launchctl load /Library/LaunchDaemons/org.myname.foojob

이것은 PLIST 파일입니다 : 이것은 내가 나 자신 또는 수퍼 유저로 스크립트를로드 여부를 발생 Mac OSX 10.4의 기본 제공 launchd로 실행합니다. 바라건대 그것은 plist 파일에 약간 잘못된 것이다. 아무도 아이디어가 없습니까?

답변

2

또한 해당 설정 파일을 사용하여 10.4 시스템에서 일회성 동작을 얻습니다.

내 10.4 시스템의 launchd.plist (5) 맨 페이지에 StartCalendarInterval은 "사전의 정수"라고 나와 있습니다. 사용중인 "정수 사전 배열"이 the 10.6 launchd.plist(5) manpage에 기록되어있는 것 같습니다. 나는 forum post that indicates that the array feature was introduced in 10.5을 찾았다.

10.4의 경우 사용할 각 StartCalendarInterval에 대해 하나의 파일을 만들어야 할 것입니다. 또는 매일 같은 시간 (다른 사람들과 함께 월요일에 가져 오기)을 사용할 수 있다면 plist 파일에 Weekday 사양을 생략하여 (스크립트가 매일 지정된 시간에 실행되도록) 그 날이 주말 인 경우 test "$(date +%u)" -lt 6 || exit 0 일 경우 스크립트를 일찍 종료하십시오.

+0

저는 월요일 기록이 격일로 같은 시간이되도록했습니다. 다른 날짜는 일부 테스트에서 남은 것일뿐입니다. "test"줄을 bash 스크립트에 추가 했으므로 launchd가 매일 실행되도록 허용하고 있습니다. 그것은 작동하는 것 같습니다. 감사합니다. – AaronM