为什么即使RunAtLoad键设置为false,我启动的作业仍在启动时运行?


10

我有一个启动的plist文件,该文件用于每天在选定的时间运行程序。它可以工作,但是每当我启动计算机或使用GUI程序LaunchControl-卸载并重新加载作业时,即使我将密钥设置为false,它也会运行该程序RunAtLoad

完整的plist文件如下:它位于/Library/LaunchAgents/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>RunAtLoad</key>
    <false/>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <false/>
    </dict>
    <key>Label</key>
    <string>com.adbot.plist</string>
    <key>LowPriorityIO</key>
    <true/>
    <key>Program</key>
    <string>/Users/wcm1/programming/ricedh/adbot/adbot.py</string>
    <key>StandardErrorPath</key>
    <string>/tmp/com.adbot.plist.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/com.adbot.plist.out</string>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>10</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    </array>
</dict>
</plist>

有什么想法吗?


看来我的KeepAlive定义暗示RunAtLoad,甚至凌驾于我设置RunAtLoad为false的企图。不知道为什么会这样,但是取出KeepAlive障碍似乎已经解决了问题。
user76493 2014年

Answers:


10

SuccessfulExitRunAtLoad键之间可能存在交互。该的launchd plist中手册页提及的反转发生,如果RunAtLoad是一套:

成功退出

如果为true,则只要程序退出且退出状态为零,作业将重新启动。

如果为false,则将以相反的条件重新启动作业。该键意味着“ RunAtLoad”被设置为true,因为在获得退出状态之前,该作业至少需要运行一次。

其他人则在这种行为上苦苦挣扎,请参阅launchd忽略RunAtLoad = false

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.