Recientemente se me señaló que existe una alternativa al cron, a saber, los temporizadores systemd.
Sin embargo, no sé nada sobre los temporizadores systemd o systemd. Solo he usado cron.
Hay una pequeña discusión en Arch Wiki . Sin embargo, estoy buscando una comparación detallada entre los cron
temporizadores y systemd, centrándome en los pros y los contras. Utilizo Debian, pero me gustaría una comparación general de todos los sistemas para los que estas dos alternativas están disponibles. Este conjunto puede incluir solo distribuciones de Linux.
Aquí está lo que sé.
Cron es muy viejo y se remonta a fines de la década de 1970. El autor original de cron es Ken Thompson, el creador de Unix. Vixie cron, del cual los crons en las distribuciones modernas de Linux son descendientes directos, data de 1987.
Systemd es mucho más nuevo y algo controvertido. Wikipedia me dice que su lanzamiento inicial fue el 30 de marzo de 2010.
Entonces, mi lista actual de ventajas de cron sobre temporizadores systemd es:
Cron está garantizado para estar en cualquier sistema similar a Unix, en el sentido de ser una pieza de software compatible instalable. Esto no va a cambiar. Por el contrario, systemd puede o no permanecer en las distribuciones de Linux en el futuro. Es principalmente un sistema init, y puede ser reemplazado por un sistema init diferente.
Cron es simple de usar. Definitivamente más simple que los temporizadores systemd.
La lista correspondiente de ventajas de los temporizadores systemd sobre cron es:
- Los temporizadores de Systemd pueden ser más flexibles y capaces. Pero me gustaría ejemplos de eso.
Entonces, para resumir, aquí hay algunas cosas que sería bueno ver en una respuesta:
- Una comparación detallada de los temporizadores cron vs systemd, incluidos los pros y los contras del uso de cada uno.
- Ejemplos de cosas que uno puede hacer que el otro no.
- Al menos una comparación lado a lado de un script cron frente a un script de temporizadores systemd.
fuente
Respuestas:
Aquí hay algunos puntos sobre esos dos :
verificar lo que realmente hace su trabajo cron puede ser un desastre, pero todos los eventos del temporizador systemd se registran cuidadosamente en el diario systemd como las otras unidades systemd en función del evento que hace las cosas mucho más fáciles.
Los temporizadores systemd son servicios systemd con todas sus capacidades para la gestión de recursos, la programación de CPU de IO, ...
Hay una lista:
con la opción de dependencias al igual que otros servicios systemd, puede haber dependencias en el tiempo de activación.
Las unidades se pueden activar de diferentes maneras, también se puede configurar una combinación de ellas. los servicios pueden iniciarse y activarse por diferentes eventos como usuario, arranque, cambios de estado del hardware o, por ejemplo, 5 minutos después de que se conecte algún hardware y, ...
configuración mucho más fácil de algunos archivos y etiquetas directas para hacer una variedad de personalizaciones basadas en sus necesidades con temporizadores systemd.
Activa / desactiva fácilmente todo con:
y matar a todos los hijos del trabajo con:
Los temporizadores systemd se pueden programar con calendarios y tiempos monótonos, lo que puede ser realmente útil en caso de diferentes zonas horarias y, ...
Los eventos de tiempo systemd (calendario) son más precisos que cron (parece precisión de 1)
Los eventos de tiempo de systemd son más significativos, para aquellos recurrentes o incluso aquellos que deberían ocurrir una vez, aquí hay un ejemplo del documento :
Desde el punto de vista del uso de la CPU, el temporizador systemd activa la CPU en el tiempo transcurrido, pero cron lo hace con más frecuencia.
Los eventos de temporizador se pueden programar en función de los tiempos de finalización de las ejecuciones, se pueden establecer algunos retrasos entre ejecuciones.
La comunicación con otros programas también es notable, a veces es necesario que otros programas conozcan los temporizadores y el estado de sus tareas.
fuente
man systemd.time
que parece contradecirlo: las zonas horarias no locales, excepto UTC, no son compatibles.Directamente de la boca del caballo, por así decirlo: https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement
Un extracto de la página de arriba:
fuente