No puedo programar un lanzamiento periódico con launchctl/ launchden OS X (Leopard). Básicamente, no puedo encontrar una lista paso a paso de instrucciones en la web y el enfoque intuitivo no funciona.
El sync.plistarchivo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.madrat.utils.sync</string>
<key>Program</key>
<string>rsync</string>
<key>ProgramArguments</key>
<array>
<string>-ar</string>
<string>/path/to/folder/</string>
<string>/path/to/backup/</string>
</array>
<key>StartInterval</key>
<integer>7200</integer>
</dict>
</plist>
He puesto este script dentro del camino ~/Library/LaunchAgents.
A continuación, he registrado el script usando
launchctl load ~/Library/LaunchAgents/sync.plist
Finalmente, para probar que funciona, comencé el trabajo:
launchctl start net.madrat.utils.sync
- No pasó nada. La ejecución manual del rsynccomando en el terminal produce el resultado esperado.
Estoy bastante seguro de que el trabajo se registró correctamente porque si intento iniciar un trabajo no existente, recibo un mensaje de error (que no recibí en el comando anterior).
¿Qué hice mal?

launchctl listlo hizo de la pantalla 1, pero sólo después de que comenzara el agente manualmente utilizandolaunchctl start.Respuesta larga:
Es difícil trabajar con launchd sin comprender algunos principios básicos. Por lo tanto, es probable que no encuentre ninguna instrucción paso a paso, tiene muchas capacidades. Un buen movimiento es dirigirse a la guía de inicio en el ADC: http://developer.apple.com/macosx/launchd.html
También puede leer las páginas del manual para
launchd,launchctly la sintaxis de los archivos .Plist,launchd.plist.Hay un malentendido frecuente sobre dónde poner a su agente o demonio, así que permítame mostrarle información al respecto aquí:
Respuesta corta:
El nombre de su archivo plist puede estar equivocado, no se puede probar en este momento, pero lo habría configurado
net.madrat.utils.sync.plist. También puede ser útil primerounloadsu demonio antes de cargarlo si editó el archivo.fuente
launchd bashpara la depuración, pero esto no funciona en Leopard (launchdno se puede iniciar directamente).No puedo encontrar documentación de que este sea realmente un comportamiento estándar, pero parece que launchd requiere rutas absolutas en los archivos plist. Intenta en su
/usr/bin/rsynclugar. ¡Funciona para mi!fuente
prueba esto, mis scripts funcionan sin usar la parte del programa, solo argumentos del programa ...
reemplazar
con
fuente
intente agregar estas claves a su archivo plist
fuente
Tiene una cosa incorrecta en su archivo .plist y una cosa dudosa (cada uno de estos puntos ha sido mencionado en respuestas anteriores; los estoy reuniendo aquí).
Sería mejor escribir:
El primer argumento en la
ProgramArgumentsmatriz es el programa que se ejecutará; lo ha omitido. SiProgramse omite la clave, el valor predeterminado es el primer argumento deProgramArguments; Probablemente sea aconsejable especificar esto solo una vez.Debido a que omitió este primer argumento, su .plist habrá invocado rsync (al ser nombrado
Program), pero el 'primer argumento' de rsync habría sido/path/to/folder, y no-ar(el programa en ejecución habrá sido muy brevemente visible en lapssalida, antes de salir con un error, pero llamado como-ar, que es el contenido del argumento cero).No tiene que incluir el camino
rsync, pero en este tipo de contexto, probablemente sea prudente hacerlo, para evitar tener que confiar en quePATHse establezca adecuadamente.La documentación para esto está en
launchd.plist(5). Tenga en cuenta que esa página de manual destaca que el valor de laProgramArgumentsclave se pasa aexecvp(3). Es la página deexecvpmanual que explica sobre la búsqueda de RUTA.fuente