8 votos

¿Cómo puedo ejecutar un trabajo una vez al día con launchd, independientemente de cuándo esté encendido el ordenador?

Me gustaría ejecutar un shell script diariamente, pero no necesariamente a una hora concreta. El ordenador en el que se ejecuta el script se enciende a horas irregulares, y no se puede suponer cuándo será.

Para ello, me gustaría que launchd se comportara un poco como anacron: sólo necesita ejecutar el trabajo una vez al día , en cualquier momento conveniente .

La mayoría de los mensajes que he visto aquí o en otros sitios describen cosas como "funcionando todos los días a las 05:00", lo que no me sirve si la máquina está apagada a esa hora...

¿Cómo puedo escribir un plist de launchd que especifique ese comportamiento?

6voto

Launchd ejecutará sus trabajos la próxima vez que el mac se despierte del reposo. Así que si apagas tu mac, esto no funcionará. Tendrá que poner su mac en reposo para que su script diario se ejecute cuando el mac se despierte si la última vez que debería haberse ejecutado fue durante la duración del reposo.

man launchd.plist:

Si el sistema está dormido, el trabajo se iniciará la próxima vez que el ordenador se despierte. Si transcurren varios intervalos antes de que el ordenador se despierte, esos eventos se unirán en un solo evento al despertar del del sueño.

O en otras palabras: No tienes que hacer nada específico, es el comportamiento por defecto de todos modos.

Si también quieres ejecutar el comando una vez después de reiniciar, añade

<Key>RunAtLoad</Key>
<true/>

a su plist de launchd.

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