Dlaczego moje uruchomione zadanie jest uruchamiane podczas rozruchu, nawet jeśli klucz RunAtLoad ma wartość false?

10

Mam uruchomiony plik plist, którego używam do codziennego uruchamiania programu o wybranej godzinie. Działa, ale uruchamia także program za każdym razem, gdy uruchamiam komputer lub rozładowuję i ponownie ładuję zadanie za pomocą programu GUI LaunchControl --- nawet jeśli mam RunAtLoadustawiony klucz false?

Pełny plik plist znajduje się poniżej; znajduje się w /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>

Myśli?

użytkownik76493
źródło
Wygląda na to, że moja KeepAlivedefinicja sugerowała RunAtLoad, a nawet przesłaniała moją próbę ustawienia RunAtLoadna fałsz. Nie jestem pewien, dlaczego tak jest, ale usunięcie KeepAlivebloku wydaje się rozwiązać problem.
user76493

Odpowiedzi:

10

Prawdopodobnie masz interakcję między klawiszami SuccessfulExiti RunAtLoad. Plist launchd instrukcja strona wspomina inwersję odbywa jeśli RunAtLoadjest zestaw:

Udane wyjście

Jeśli ma wartość true, zadanie zostanie uruchomione ponownie, dopóki program zakończy działanie, a status zakończenia będzie wynosił zero.

W przypadku wartości false zadanie zostanie ponownie uruchomione w odwrotnym stanie. Ten klucz oznacza, że ​​parametr „RunAtLoad” ma wartość true, ponieważ zadanie musi zostać uruchomione co najmniej raz, zanim będziemy mogli uzyskać status wyjścia.

Inni borykali się z tym zachowaniem, patrz uruchomione ignoruje RunAtLoad = false .

Graham Miln
źródło