2 votos

Cómo hacer un LaunchAgent con StartCalendarInterval

Quiero empezar a sustituir los crontabs por los LaunchAgents. Mi primer intento no funciona.

<?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>Label</key>
    <string>com.nocturnal.mcworldsBackup</string>
    <key>ProgramArguments</key>
    <array>
            <string>~/bin/mcworldsBackup.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
            <key>Hour</key>
            <integer>4</integer>
            <key>Minute</key>
            <integer>30</integer>
    </dict>
</dict>
</plist>

El script mcworldsBackup.sh funciona bien de forma independiente. He hecho que registre una marca de tiempo en un archivo cada vez que se ejecuta y hasta ahora launchd no lo ha ejecutado ni una sola vez.

He comprobado y reparado los permisos de mi disco usando DiskUtility, el plist está en ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist con permisos 0644, igual que los demás archivos .plist que ya están ahí. Todos son propiedad de me:staff.

Si busco en grep mcworldsBackup.sh en /var/log/* no encuentro nada, ninguna pista de por qué no se ejecuta.

Después de crear el plist por primera vez, he cerrado la sesión y vuelto a iniciarla, también he reiniciado el ordenador varias veces aunque la documentación dice que sólo hay que iniciar la sesión.

3voto

Nathan Grigg Puntos 876

Debe especificar la ruta completa en ProgramArguments. Las cosas que su shell normalmente expande, como ~ y * no se expanden por launchd .

Después de hacer esos cambios, este LaunchAgent me funcionó.

Dijiste que habías hecho estos cambios, pero no se arregló. Es posible que no hayas recargado el LaunchAgent después de hacer los cambios.

Solución de problemas de los LaunchAgents

Puede comprobar si su LaunchAgent está cargado actualmente ejecutando

launchctl list | grep com.nocturnal.mcworldsBackup

Si no se está ejecutando, puede cargarlo utilizando

launchctl load ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist

Si realiza algún cambio en el archivo plist, tendrá que descargarlo utilizando

luanchctl unload ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist

A continuación, tendrá que cargarlo de nuevo, utilizando el comando de arriba.

Si quiere forzar el inicio del LaunchAgent ahora, en lugar de esperar hasta las 4:30, puede ejecutar

launchctl start com.nocturnal.mcworldsBackup

A continuación, se puede hacer una lista con

launchctl list | grep com.nocturnal.mcworldsBackup

La primera columna del resultado es el PID del proceso, si se está ejecutando actualmente. La segunda columna es el código de salida devuelto la última vez que se ejecutó. Utilice esto para comprobar si se ejecutó correctamente. Si no es así, el mensaje de error se escribe en /var/log/system.log .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X