2009-11-24 102 views
1

我正在嘗試編寫一個launchd腳本,該腳本每天只在平日運行一次。但是一旦我加載腳本,它就會每分鐘運行一次,而不是按計劃運行。出現這種情況我是否加載腳本作爲自己或超級用戶:啓動每分鐘運行的作業

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

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

這是plist文件:

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> 

我使用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創建一個文件。或者,如果您每天可以使用同一時間(使星期一與其他時間一致),則可以在平面文件中保留Weekday規範(以便您的腳本每天在特定時間運行)以及那麼如果一週中的某一天是週末的話,請儘早退出腳本test "$(date +%u)" -lt 6 || exit 0)。

+0

我的意思是星期一的記錄與隔日的時間相同。那個日期只是一些測試中的剩餘部分。 我在bash腳本中添加了「測試」行,並允許launchd每天運行。它似乎在工作。 謝謝! – AaronM 2009-11-25 05:44:30