我尝试在 /Library/LaunchAgents 和 /Library/LaunchDaemons 中使用此 plist 文件,但似乎都不起作用。我可以从命令行运行它应该调用的 shell 脚本,它运行良好。我编辑了 plist,使其在当前时间两三分钟后运行一次,它运行良好,但当我让它在晚上运行时(计算机开启,管理员用户/我登录或未登录)它从不运行,日志中也没有任何显示。脚本归我所有,权限为 755,plist 归 root 所有,权限为 744。系统运行的是 OS X 10.8.x。谢谢。
<?xml version="1.0" encoding="UTF-8"?>
<!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>local.Daily.Backup.plist</string>
<key>OnDemand</key>
<true/>
<key>RunAtLoad</key>
<false/>
<key>Program</key>
<string>/Users/hansgruber/backup/dailyBackup.sh</string>
<key>StartCalendarInterval</key>
<dict>
<key>Weekday</key>
<integer>1</integer>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>15</integer>
</dict>
</dict>
</plist>
答案1
如果该程序需要每天运行,请删除该Weekday
键。<key>Weekday</key><integer>1</integer>
表示该程序仅在周一运行。
另外,您不需要OnDemand
或RunAtLoad
键。OnDemand
在 10.5 中已被弃用,取而代之的是RunAtLoad
,RunAtLoad
默认情况下为 false。
答案2
问题显然在于我在 Label 标签中包含了“.plist”。文件名是“local.Daily.Backup.plist”,因此,根据我在一篇关于 launchd/launchctl 的博客文章中看到的建议,我使用文件名作为 Label。不知道为什么,但当我卸载脚本、从 Label 标签中删除“.plist”然后再次加载它时,它就起作用了。希望它会继续这样。