Estoy confundido acerca de las diferencias entre las tres (que yo sepa) herramientas para programar la ejecución de código en OS X/Darwin:
Entiendo que cron
está en desuso en gran medida, pero todavía lo usan algunas utilidades (como Super Super!, por alguna razón), y pmset
tiene la capacidad de activar la computadora para ejecutar trabajos específicos. Pero no tengo claro qué guiaría la selección de uno sobre el otro en general.
¿Cómo difieren estos tres métodos de programación del sistema operativo (especialmente en Mavericks, si las cosas son diferentes allí), especialmente en los niños de las tareas para las que son adecuados y cómo se comportan durante el sueño o la hibernación?
Utilice launchd
en lugar de cron
, at
u otras herramientas UNIX heredadas para Mac OS X.
pmset es una herramienta de línea de comandos incorporada para obtener y configurar valores relacionados con la energía en Mac OS X. Una de las capacidades de pmset es agregar y eliminar entradas de IOPMQueue; IOPMQueue es la cola de nivel de IOKit que permite que su Mac se encienda y se despierte en un momento específico. IOPMQueue también admite la programación de apagados y reinicios.
El código arbitrario no se puede programar mediante pmset o a través de IOPMQueue.
cron es un incondicional del mundo de la programación de tareas. Sin embargo, en Mac OS X, no se recomienda usar cron. uso launchd
_
cron se implementa al verificar cada minuto las tareas que vencen. Esto permite un formato de programación potente y expresivo, pero a costa de tener que reactivar el procesador cada minuto.
cron no sabe si tu Mac está durmiendo. Si vence una tarea mientras su Mac está inactiva o apagada, la tarea no se llevará a cabo. Cuando su Mac se vuelva a encender, la tarea no se realizará porque ha pasado el minuto en el que debería haberse ejecutado.
Hay otras herramientas que se basan en cron y pueden ejecutar tareas perdidas al despertar. Ninguno está incluido por defecto con Mac OS X.
launchd (demonio de lanzamiento) es el iniciador del sistema, la herramienta de programación y el control de procesos de Apple. launchd está escrito para las necesidades del sistema operativo en primer lugar y de los usuarios en segundo lugar. Es un proceso poderoso y capaz que se utiliza para administrar o iniciar casi todos los demás procesos en su Mac.
launchd es una mejora en cron para la programación porque no necesita sondear para realizar tareas. En su lugar, launchd puede permanecer inactivo hasta el momento en que se deba realizar una tarea. En una era de computación móvil y consciente de la energía, esto es importante.
launchd no activará una Mac dormida para realizar tareas.
Las fichas de trabajo de launchd son archivos de lista de propiedades (plist). Estos archivos se pueden editar con un editor de texto o con varias aplicaciones de terceros.
launchd se recomienda y es adecuado para la mayoría de las situaciones de programación.
Hay varias herramientas de programación de terceros disponibles en Mac OS X. A menudo proporcionan una interfaz gráfica u ofrecen más funciones que las que se incluyen en las herramientas de línea de comandos estándar de Mac OS X. La herramienta con la que estoy asociado es Power Manager .
pmset
es algo de bajo nivel, y realmente no controla la ejecución del código específicamente, al menos no de forma directa o intencionada. Controla cosas como encender o apagar su Mac en momentos específicos, de forma similar a como lo puede hacer en Preferencias del sistema » Ahorro de energía. En términos generales, nunca debería necesitar usarlo pmset
para nada directamente.
cron
sigue ahí porque… bueno, porque Apple aún no lo ha acabado, a pesar de haberlo dejado obsoleto hace mucho tiempo. Sospecho que es porque hay algunas personas de Un * x de antaño que todavía trabajan en Apple que no quieren ver que se vaya. Pero, en realidad, no tiene sentido usar eso si puedes usar launchd
. Los trabajos de IIRC cron
no se ejecutan si la computadora estaba inactiva cuando se suponía que debía ejecutarse.
launchd
es el reemplazo de Apple cron
que agrega mucha flexibilidad a la programación de eventos en una Mac. Esta es la forma en que debe programar eventos en una Mac. La mejor manera de aprender a usar launchd
es LaunchControl , que es una aplicación de US$10 sin DRM, sin códigos de licencia y sin restricciones. (Los desarrolladores confían en la honestidad de sus usuarios para pagar la tarifa de registro si usan la aplicación). No solo obtiene la funcionalidad de arrastrar y soltar para traer varios elementos de launchd
plists, cada uno está documentado para que pueda ver exactamente Que hace. Altamente recomendado
pmset
, ¿cómo funciona una aplicación como Power Manager ? Claramente crea pmset
entradas (y no usa cron
o launchd
) y también hace más que simplemente activar la máquina (ejecuta código arbitrario).
oromo
cron
, especialmente si activa el procesador cada minuto?!graham miln
cron
para Super Duper! no es malo, sino que es probable que haya alguna restricción de diseño en sus planes, o una limitaciónlaunchd
que encontraron durante el desarrollo. Hay pocos incentivos para que Shirt Pocket migre alaunchd
mientrascron
siga funcionando bien para sus clientes.oromo
graham miln
cron_tick
función y el ciclo de llamada para confirmar este comportamiento.oromo
cron
se despierta cada segundo, incluso si no haycron
tareas programadas, es decir, la vigilia continuaría incluso si no hubiera ninguna?graham miln
cron
se despierta cada minuto para verificar si hay alguna tarea pendiente.