¿Necesita ayuda para solucionar problemas / aprender launchctl y plist

3

Siempre he sido un chico crontab. Recientemente, he decidido cambiar a los procesos de lanzamiento de Apple, y no puedo hacer funcionar mi primera cuenta.

  1. El comando plutil -lint me dice que el formato de lista es correcto. En realidad, da como resultado "OK".

  2. He ejecutado el script bash manualmente y confirmé que funciona correctamente cuando se inicia manualmente.

  3. He cargado el archivo utilizando launchctl load y he recibido la respuesta "ya cargada" en repetidos intentos de hacer lo mismo.

El problema debe estar en mi definición de PLIST. Por favor, ayúdame a detectar el error.

Espero que esto se ejecute con las siguientes condiciones:

  • Solo mientras el usuario jaredclemence está usando el sistema
  • Una vez que inicie sesión inmediatamente
  • Cada 15 minutos a partir de entonces
  • Cambie el Directorio a /Library/WebServer/Documents/medface/ antes de ejecutar el script.

El archivo plist es el siguiente:

<?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>org.pediatricheartcenter.medface.crons</string>
        <key>User</key>
        <string>jaredclemence</string>
        <key>ProgramArguments</key>
        <array>
                <string>/User/jaredclemence/runMedfaceSchedTasks.batch</string>
        </array>
        <key>WorkingDirectory</key>
        <string>/Library/WebServer/Documents/medface</string>
        <key>StartInterval</key>
        <integer>900</integer>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

Notas:

  • He almacenado el archivo en ~/Library/LaunchAgents/org.pediatricheartcenter.medface.crons.plist
  • Una versión anterior del archivo usó Program en lugar de ProgramArguments con un valor de <string> en lugar de una matriz.
pregunta Jared Clemence 03.02.2017 - 18:31

1 respuesta

4

Launchd escribe errores en system.log. Usando la consola, he visto el registro. Allí, launchd me dijo que no le gustaba mi valor clave User . Quité el usuario - par de clave-valor de jaredclemence, y cargué la lista nuevamente. Luego me dijo que el programa por lotes no existía y luego noté el error en la ruta del archivo. /User debería ser /Users

Al eliminar la configuración del usuario y corregir la ruta del archivo, pude solucionar el problema. Ahora, ejecutando ps -ef | grep 'runMed' , puedo ver que el archivo por lotes se está ejecutando actualmente.

¡ÉXITO!

    
respondido por el Jared Clemence 03.02.2017 - 18:48

Lea otras preguntas en las etiquetas