0 votos

Launchctl y estados de suspensión

Tengo un plist (ver abajo) que ejecuta una aplicación y se ejecuta al cargar y tiene un startinterval de 14400 (4 horas). También tengo la costumbre de no poner a dormir manualmente mi Mac cuando estoy en casa, sino simplemente apagar la pantalla (está conectado a la corriente). Consultando el registro puedo ver que mi Mac entra y sale de varios estados de sueño durante un periodo de ~12 horas (Sueño de Mantenimiento, Sueño Inactivo, Servicio de Sueño de vuelta al Sueño) pero durante este tiempo mi LaunchAgent plist no parece ejecutar la aplicación. Mi entendimiento es que launchctl ejecutará el plist que se perdió durante el sueño, entonces ¿por qué no está sucediendo esto? PD: la aplicación copy2sync.app referenciada en el plist se ejecuta al cargar como se espera y funciona bien.

  Label
  com.test.copy2sync
ProgramArguments

    /Applications/copy2sync.app/Contents/MacOS/Automator Application Stub

Nice
  1
RunAtLoad

StartInterval
14400
StandardErrorPath
  /tmp/copytosync1.err
StandardOutPath
  /tmp/copytosync1.out

0voto

Linc D. Puntos 11

Desde la página del manual de launchd.plist(5):

StartInterval 
 Este clave opcional hace que el trabajo se inicie cada N segundos. Si el sistema está en reposo durante el tiempo del próximo intervalo de ejecución programado, ese intervalo se perderá debido a deficiencias en kqueue(3). Si el trabajo se está ejecutando durante una ejecución de intervalo, también se perderá esa ejecución de intervalo.

StartCalendarInterval 
 Esta clave opcional hace que el trabajo se inicie cada intervalo de calendario especificado. Los argumentos faltantes se consideran comodines. La semántica es similar a crontab(5) en cómo se especifican las fechas de ejecución. Se pueden especificar varios diccionarios en un arreglo para programar varios intervalos de calendario.

 A diferencia de cron que omite las invocaciones de trabajo cuando la computadora está en reposo, launchd iniciará el trabajo la próxima vez que la computadora se despierte. Si transcurren múltiples intervalos antes de que la computadora se despierte, esos eventos se fusionarán en un solo evento al despertar del sueño.

Por ejemplo, para ejecutar un trabajo cada 4 horas a partir de la medianoche diariamente:

StartCalendarInterval

        Hora
        0

        Hora
        4

        Hora
        8

        Hora
        12

        Hora
        16

        Hora
        20

Puede haber un error en launchd que hará que el trabajo se ejecute con un desfase respecto a los horarios especificados, dependiendo de la zona horaria, pero eso no debería importar para tus propósitos.

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