我正在尝试编写一个每天运行一次的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>
<!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文件略有错误。有人有想法吗?
答案 0 :(得分: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文件中省略工作日规范(以便您的脚本每天在指定的时间运行)和如果星期几是周末test "$(date +%u)" -lt 6 || exit 0
),则让您的脚本提前退出。