Quiero comenzar a reemplazar crontabs con 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. Lo hice registrar una marca de tiempo en un archivo cada vez que se ejecuta y hasta ahora launchd no lo ha ejecutado ni una sola vez.
Revisé y reparé los permisos de mi disco usando DiskUtility, el plist está en ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist con permisos 0644, al igual que todos los demás archivos .plist que ya están allí. Todos son de mi propiedad: personal.
Si busco mcworldsBackup.sh en /var/log/*, no encuentro nada, ni pistas de por qué no se está ejecutando.
Después de crear el plist por primera vez, cerré sesión y volví a iniciar sesión, también reinicié la computadora varias veces a pesar de que la documentación dice que solo necesita iniciar sesión.
Debe especificar la ruta completa en ProgramArguments. Cosas que su caparazón normalmente expande, como ~
y *
no son expandidas por launchd
.
Después de hacer esos cambios, este LaunchAgent funcionó para mí.
Dijiste que hiciste estos cambios, pero no lo solucionó. Es posible que no haya recargado LaunchAgent después de realizar los cambios.
Puede verificar si su LaunchAgent está actualmente cargado ejecutando
launchctl list | grep com.nocturnal.mcworldsBackup
Si no se está ejecutando, puede cargarlo usando
launchctl load ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist
Si realiza algún cambio en el archivo plist, deberá descargarlo usando
luanchctl unload ~/Library/LaunchAgents/com.nocturnal.mcworldsBackup.plist
Luego deberá cargarlo nuevamente, usando el comando de arriba.
Si desea forzar que LaunchAgent se inicie ahora, en lugar de esperar hasta las 4:30, puede ejecutar
launchctl start com.nocturnal.mcworldsBackup
Luego puede enumerarlo usando
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ó. Use esto para verificar si funcionó correctamente. Si no, el mensaje de error se escribe en /var/log/system.log
.
shanusmagnus
Stefan Midjich