2009-11-24 97 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

相关问题