7 votos

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

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

Entiendo que cron está en gran medida obsoleto, pero todavía es utilizado por algunas utilidades (como Super Super!, por alguna razón), y que pmset tiene la capacidad de despertar el ordenador 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 del sistema operativo (especialmente en Mavericks, si las cosas son diferentes allí), sobre todo en los chicos de las tareas que son adecuados, y cómo se comportan durante el sueño o la hibernación?

5voto

Steve Evans Puntos 155

Utilice 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 integrada para obtener y establecer valores relacionados con la energía en Mac OS X. Una de las habilidades de pmset es añadir y eliminar entradas de la IOPMQueue; la IOPMQueue es la cola a nivel de IOKit que permite a su Mac encenderse y despertarse a una hora específica. IOPMQueue también soporta la programación de apagados y reinicios.

El código arbitrario no puede ser programado usando 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 utilizar cron. Utilice launchd .

cron se implementa comprobando cada minuto las tareas que deben realizarse. Esto permite un formato de programación potente y expresivo, pero a costa de tener que despertar al procesador cada minuto.

cron no sabe que tu Mac está durmiendo. Si una tarea debe realizarse mientras su Mac está dormido o apagado, la tarea no se llevará a cabo. Cuando su Mac se vuelva a encender, la tarea no se realizará porque ya 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. Ninguna está incluida por defecto en Mac OS X.

lanzamientod

lanzamientod (launch daemon) es el iniciador del sistema, la herramienta de programación y el vigilante 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 potente y capaz que se utiliza para gestionar o lanzar casi todos los demás procesos de su Mac.

launchd es una mejora de cron para la programación porque no necesita hacer un sondeo para realizar las tareas. En su lugar, launchd puede permanecer inactivo hasta el momento en que una tarea deba realizarse. En la era de la informática móvil y consciente de la energía, esto es importante.

launchd no despertará un Mac dormido para realizar tareas.

boletos de trabajo de launchd son archivos de listas de propiedades (plist). Estos archivos pueden editarse 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.

Terceras partes

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 incluidas en las herramientas de línea de comandos estándar de Mac OS X. La herramienta con la que estoy asociado es Gestor de energía .

3voto

moodforaday Puntos 2633

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 tu Mac en momentos específicos, de forma similar a lo que puedes hacer en Preferencias del Sistema " Ahorro de Energía. En general, no debería ser necesario utilizar pmset para nada directamente.

cron sigue ahí porque bueno, porque Apple aún no lo ha eliminado, a pesar de haberlo desaprobado hace años. Sospecho que se debe a que hay algunos antiguos miembros de Un*x que todavía trabajan en Apple y no quieren que desaparezca. Pero, en realidad, no tiene sentido utilizarlo si puedes usar launchd . IIRC cron Los trabajos no se ejecutan si el ordenador estaba dormido cuando debía ejecutarse.

launchd es el sustituto de Apple para cron que añade mucha flexibilidad a la programación de eventos en un Mac. Esta es la forma en que debería programar eventos en un Mac. La mejor manera de aprender a usar launchd es LaunchControl que es una aplicación de 10 dólares sin DRM, sin códigos de licencia y sin restricciones. (Los desarrolladores confían en la honestidad de sus usuarios para que paguen la cuota de inscripción si utilizan la app). No sólo se obtiene la funcionalidad de arrastrar y soltar para traer varios elementos de launchd plists, cada uno está documentado para que puedas ver exactamente lo que hace. Altamente recomendada.

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