这个 launchd plist 有问题吗?无法正常工作,但日志中没有显示任何错误

这个 launchd plist 有问题吗?无法正常工作,但日志中没有显示任何错误

我尝试在 /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>表示该程序仅在周一运行。

另外,您不需要OnDemandRunAtLoad键。OnDemand在 10.5 中已被弃用,取而代之的是RunAtLoadRunAtLoad默认情况下为 false。

答案2

问题显然在于我在 Label 标签中包含了“.plist”。文件名是“local.Daily.Backup.plist”,因此,根据我在一篇关于 launchd/launchctl 的博客文章中看到的建议,我使用文件名作为 Label。不知道为什么,但当我卸载脚本、从 Label 标签中删除“.plist”然后再次加载它时,它就起作用了。希望它会继续这样。

相关内容