12 votes

Pourquoi mon travail launchd s'exécute-t-il au démarrage même si la clé RunAtLoad est réglée sur false ?

J'ai un fichier plist launchd que j'utilise pour exécuter un programme à une heure précise chaque jour. Cela fonctionne, mais le programme est également exécuté chaque fois que je démarre l'ordinateur ou que je décharge et recharge le travail à l'aide du programme GUI LaunchControl---. même si j'ai le RunAtLoad défini sur false ?

Le fichier plist complet est ci-dessous ; il est situé dans /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>

Qu'en pensez-vous ?

13voto

Graham Miln Points 39606

Vous avez probablement une interaction entre le SuccessfulExit y RunAtLoad clés. Le site manuel du plist de launchd La page mentionne qu'une inversion a lieu si RunAtLoad est fixé :

Sortie réussie

Si c'est vrai, le travail sera redémarré tant que le programme sort et avec un statut de sortie de zéro.

Si elle est fausse, le travail sera redémarré dans la condition inverse. Cette clé implique que "RunAtLoad" est défini sur true, puisque le job doit s'exécuter au moins une fois avant que nous puissions obtenir un statut de sortie.

D'autres ont lutté contre ce comportement, voir launchd ignore RunAtLoad=false .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X