¿Por qué mi trabajo launchd se está ejecutando en el arranque incluso con la clave RunAtLoad configurada en falso?

9

Tengo un archivo plist de launchd que utilizo para ejecutar un programa a una hora seleccionada todos los días. Funciona, pero también ejecuta el programa cada vez que arranco la computadora, descargo y recargo el trabajo mediante el programa GUI LaunchControl --- aunque tengo la clave RunAtLoad configurada como falsa?

El archivo completo de plist está abajo; se encuentra en /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>

¿Pensamientos?

    
pregunta user76493 23.04.2014 - 14:32

1 respuesta

10

Es probable que tenga una interacción entre las claves SuccessfulExit y RunAtLoad . La página de launchd plist menciona una inversión tiene lugar si se establece RunAtLoad :

  

SuccessfulExit

     

Si es verdadero, el trabajo se reiniciará siempre que el programa salga y con un estado de salida de cero.

     

Si es falso, el trabajo se reiniciará en la condición inversa. Esta clave implica que "RunAtLoad" está establecido en verdadero, ya que el trabajo debe ejecutarse al menos una vez antes de que podamos obtener un estado de salida.

Otros han tenido dificultades con este comportamiento, consulte launchd ignora RunAtLoad = false .

    
respondido por el Graham Miln 23.04.2014 - 15:16

Lea otras preguntas en las etiquetas