¿Cuál es la diferencia entre los diversos programadores de eventos para OS X / Darwin?


7

Estoy confundido acerca de las diferencias entre las tres herramientas (que conozco) para programar la ejecución del código en OS X / Darwin:

Entiendo que cron está en gran parte en desuso, pero todavía es utilizado por algunas utilidades (como Super Super! por alguna razón), y eso 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.

¿En qué se diferencian estos tres métodos de programación de SO (especialmente en Mavericks, si las cosas son diferentes allí), especialmente en los niños de las tareas a las que se adaptan, y cómo se comportan durante el sueño o la hibernación?

Respuestas:


5

Utilizar launchd en lugar de cron, at, u otras herramientas heredadas de UNIX para Mac OS X.

pmset

pmset es una herramienta de línea de comandos incorporada para obtener y configurar valores relacionados con la potencia en Mac OS X. Una de las habilidades de pmset es agregar y eliminar entradas de IOPMQueue; IOPMQueue es la cola de nivel IOKit que le permite a su Mac encenderse y despertarse a una hora específica. IOPMQueue también admite la programación de paradas y reinicios.

El código arbitrario no se puede programar utilizando pmset o a través de IOPMQueue.

cron

cron es un incondicional del mundo de la programación de tareas. Sin embargo, en Mac OS X, no se recomienda usar cron. Utilizar launchd.

cron se implementa revisando cada minuto las tareas que se deben realizar. Esto permite un formato de programación potente y expresivo, pero al costo de la necesidad de reactivar el procesador cada minuto.

cron no sabe de tu mac durmiendo. Si se debe realizar una tarea mientras su Mac está inactiva o apagada, la tarea no se realizará. Cuando su Mac vuelva a encenderse, la tarea no se realizará porque ya pasó el minuto en que debería haberse ejecutado.

Hay otras herramientas que se basan en cron y pueden ejecutar tareas perdidas al despertar. Ninguno está incluido de forma predeterminada con Mac OS X.

lanzamiento

lanzamiento (Daemon de lanzamiento) es el sistema de inicio de Apple, herramienta de programación y control de procesos. Launchd está escrito para las necesidades del sistema operativo primero y los usuarios en segundo lugar. Es un proceso potente y capaz utilizado para administrar o iniciar casi cualquier otro proceso en su Mac.

launchd es una mejora en cron para la programación porque no es necesario realizar una encuesta para realizar tareas. En su lugar, launchd puede permanecer inactivo hasta el momento en que una tarea necesita realizarse. En una era de computación móvil y consciente de la energía, esto es importante.

launchd no activará una Mac en reposo para realizar tareas.

tickets 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.

Se recomienda lanzar y es adecuado para la mayoría de las situaciones de programación.

Tercero

Hay una cantidad de 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 Administrador de energía .


Todo esto tiene sentido, pero ¿por qué un producto ( Super Duper! , por ejemplo) seguir utilizando cron, especialmente si está despertando el procesador cada minuto?
orome

Uso de la camisa bolsillo de cron para Super Duper! no es malo, pero es probable que haya alguna restricción de diseño en sus planes, o una limitación en launchd que encontraron durante el desarrollo. Hay poco incentivo para que Shirt Pocket migre a launchd Tan largo como cron Sigue funcionando bien para sus clientes.
Graham Miln

1
Sí, cron se sienta en un bucle mientras comprueba crontabs una vez por minuto. El código cron utilizado en OS X 10.9 es de código abierto: opensource.apple.com/source/cron/cron-39/cron/cron.c busca el cron_tick Función y bucle de llamada para confirmar este comportamiento.
Graham Miln

1
Asi que cron despierta cada segundo, incluso de no hay programados cron tareas - es decir, ¿el despertar continuaría incluso si no hubiera ninguno?
orome

1
cron Se despierta cada minuto para comprobar si hay alguna tarea pendiente.
Graham Miln

3

pmset es un tema de bajo nivel y realmente no controla la ejecución del código específicamente, al menos no de manera directa o intencional. Controla cosas como encender o apagar tu Mac en momentos específicos, de manera similar a como puedes hacerlo en Preferencias del sistema »Ahorro de energía. En general, nunca deberías necesitar usar pmset Para cualquier cosa directamente.

cron sigue ahí porque ... bueno, porque Apple todavía no lo ha matado, a pesar de haberlo desaprobado hace años. Sospecho que es porque hay algunas personas Un * x de antaño que aún trabajan en Apple y que no quieren que funcione. Pero, en realidad, no tiene sentido usar eso si puedes usar launchd. IIRC cron los trabajos no se ejecutan si el equipo estaba dormido cuando se suponía que debía ejecutarse.

launchd es el reemplazo de Apple para cron lo que agrega mucha flexibilidad a la programación de eventos en una Mac. Esta es la forma en que deberías programar eventos en una Mac. La mejor manera de aprender a usar. launchd es Control de lanzamiento , 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 cuota de registro si utilizan la aplicación). No solo obtiene la funcionalidad de arrastrar y soltar para incorporar varios elementos de launchd Plists, cada uno está documentado para que pueda ver exactamente lo que hace. Altamente recomendado.


Respecto a pmsetcomo le gusta a una aplicación Administrador de energía ¿trabajo? Claramente crea pmset entradas (y no utiliza cron o launchd ) y también hace más que simplemente reactivar la máquina (ejecuta código arbitrario).
orome

Eso no lo sé.
TJ Luoma

Power Manager trabaja directamente con IOPMQueue para encender tu Mac. Power Manager utiliza su propio motor de programación para ejecutar acciones programadas.
Graham Miln
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.