¿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 usado por algunas utilidades (como Super Super, por alguna razón), y que pmset tiene la capacidad de reactivar 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 cuanto a las tareas para las que están capacitados y cómo se comportan durante el sueño o la hibernación?

    
pregunta orome 26.11.2013 - 20:41

2 respuestas

5

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

pmset

pmset es una herramienta de línea de comandos incorporada para obtener y configurar valores relacionados con el poder 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 permite que su Mac se encienda y se despierte a una hora específica. IOPMQueue también admite la programación de paradas y reinicios.

El código arbitrario no se puede programar mediante 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. Utilice 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 sobre tu Mac durmiendo. Si se debe realizar una tarea mientras su Mac está inactiva o apagada, la tarea no se realizará. Cuando tu 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 se incluye de forma predeterminada con Mac OS X.

launchd

launchd (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 poderoso 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 propiedad archivos de lista (plist). Estos archivos se pueden editar con un editor de texto o con varias aplicaciones de terceros.

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

Tercero

Hay una serie 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 Power Manager .

    
respondido por el Graham Miln 02.12.2013 - 12:33
3

pmset es un tema de bajo nivel, y realmente no controla la ejecución del código específicamente, al menos no de forma 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 nada directamente.

cron sigue ahí porque ... bueno, porque Apple no lo ha eliminado aún, a pesar de haberlo desaprobado hace mucho tiempo. 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 . 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 para cron 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 LaunchControl , que es una aplicación de US $ 10 sin DRM, no Códigos de licencia, y sin restricciones. (Los desarrolladores confían en la honestidad de sus usuarios para pagar la cuota 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 usted Puede ver exactamente lo que hace. Muy recomendable .

    
respondido por el TJ Luoma 01.12.2013 - 10:49

Lea otras preguntas en las etiquetas