Cron Job

De Seobility Wiki
Saltar a: navegación, buscar

¿Qué es un Cron Job?

Cron Job
Imagen: Cron Job - Autor: Seobility - Licencia: CC BY-SA 4.0

El Cron es un administrador o programador de tareas para sistemas operativos Unix o similares y cuyo nombre proviene de Cronos, antiguo dios griego del tiempo. Con base a esto podemos decir que un Cron Job es la tarea que realiza este administrador.

Ahora bien, cuando se habla de “programar tareas”, se entiende por ejecutar comandos o scripts de shell en determinadas horas, fechas o intervalos temporales específicos.

Esto permite, por ejemplo, automatizar el mantenimiento o la administración del sistema, descargar archivos de Internet o enviar correos electrónicos con regularidad. Es un daemon o programa residente, es decir, un proceso en segundo plano que se ejecuta en el servidor.

Diferentes usos de los Cron Jobs

Los Cron Jobs se usan para implementar comandos individuales o para la ejecución automatizada de tareas secuenciales que se repiten periódicamente, como puede ser limpiar bases de datos mediante la eliminación de entradas, archivos de registro y comentarios obsoletos, así como para crear estadísticas periódicas sobre el número de usuarios y usuarias que visitan un sitio web.

Otras aplicaciones incluyen la actualización de fuentes RSS, la publicación de contenido nuevo en una web en una fecha concreta, la generación de facturas, el envío automático de boletines e incluso programar la copia de seguridad de una base de datos.

Estructura y sintaxis de un archivo CronTab

Cron utiliza archivos de configuración especiales llamados CronTab (Tabla Cron) que contienen una lista de tareas “cron“ a ejecutar. Cada línea del archivo simboliza un Cron Job y se representa como una fila de columnas separadas por un espacio en las que se especifica cuándo y con qué frecuencia se debe ejecutar un comando o script en particular.

En un archivo CronTab, las líneas vacías o las líneas que comienzan con espacios o tabuladores se ignoran. Además, también se omiten aquellas cuyo inicio es #, siendo que se consideran comentarios del programador/a.

Cabe mencionar que las líneas activas en una CronTab declaran una variable de entorno o definen el comando de un Cron Job. No se permiten comentarios en líneas activas.

Se puede acceder al archivo CronTab en un intérprete de comando escribiendo "crontab-e". Los comandos en el archivo y su tiempo de ejecución son verificados por el daemon Cron, que los ejecuta en segundo plano. Cada CronTab tiene la siguiente estructura básica con seis columnas dispuestas como una tabla:

* * * * * comando a ejecutar

Las primeras cinco columnas contienen valores de tiempo que definen cuándo se debe ejecutar un comando. Estos son, de izquierda a derecha:

  • Minuto, especificado como 0 - 59.
  • Hora, especificada como 0 - 23.
  • Día, especificado como 1 - 31.
  • Mes, especificado como 1 - 12.
  • Día de la semana, especificado como 0 – 7 (0 o 7 son los domingos).

Para cada uno de estos valores, el comodín "*" se puede utilizar para el comando de ejecución en cualquier instante (minuto, hora, día, mes o día de la semana), "*/n" para la ejecución cada n (minutos, horas, etc.) y "n,x,y" para ejecución en n, x o y. La última columna de la CronTab especifica la ruta relativa o absoluta del script a ejecutar. La acción se lleva a cabo cuando el minuto, la hora, el mes y el día del mes o día de la semana coinciden con la hora vigente.

Algunas implementaciones de Cron también admiten entradas especiales. Se usan en lugar de los primeros cinco campos de un archivo CronTab. Cada comando especifica una frecuencia concreta:

  • @yearly / @annually: ejecución una vez al año a la medianoche del 1 de enero (0 0 1 1 *).
  • @monthly: ejecución una vez al mes a la medianoche del primer día del mes (0 0 1 * *).
  • @weekly: ejecución una vez por semana a la medianoche del domingo (0 0 * * 0).
  • @daily: ejecución una vez al día a medianoche (0 0 * * *).
  • @hourly: ejecución al comienzo de cada hora (0 * * * * *).
  • @reboot: ejecución única al inicio del sistema.

Ejemplos de Cron Job

Un ejemplo de Cron Job sería la copia de seguridad de una base de datos a las 2 a.m. todos los días de la semana. En este caso, el archivo CronTab contendría lo siguiente:

0 2 * * */bin/sh copia-de-seguridad.sh

A veces puede ser necesario planificar la ejecución de tareas solo para algunos meses seleccionados. El siguiente script de ejemplo se ejecuta en enero, mayo y agosto:

* * * 1,5,8 */bin/sh script.sh

Si solo buscamos que las tareas se ejecuten en días seleccionados a una hora determinada, pongamos todos los domingos y viernes a las 5 p. m., el archivo CronTab podría verse así:

0 17 * * 0,5/bin/sh script.sh

¿Por qué es importante para el marketing online?

Con Cron Job se pueden automatizar varias tareas de marketing online que generalmente consumen mucho tiempo, por lo que aumenta de este modo la eficiencia.

Según lo mencionado, Cron Job se puede usar, para crear estadísticas de los y las visitantes de un sitio web y enviarlas automáticamente al destino que deseemos con ciertos intervalos predefinidos. Además, ayuda a las campañas de marketing, pues junto con el CMS, facilita las tareas de calcular métricas automáticamente o enviar boletines en fechas escogidas.

En resumen: preguntas frecuentes sobre Cron Job

¿Qué significa * en Cron?

El asterisco * se usa como comodín y establece la ejecución de una tarea en cualquier minuto, hora, fecha, día de la semana o mes.

¿Para qué se usa Cron?

Permite programar trabajos y automatizar tareas recurrentes, como la distribución de boletines informativos o newsletters.

¿Qué es un CronTab?

Son los archivos que contienen los Cron Jobs individuales.

¿Cómo programar un Cron Job para hacer una copia de seguridad a las 2 a. m. todos los días?

Una copia de seguridad programada que se realiza diariamente a las 2 a. m. podría verse así:

0 2 * * */bin/sh copia-de-seguridad.sh

Ampliar conocimientos

Sobre las autoras y autores:
Seobility S
El equipo de Seobility Wiki está formado por expertas y expertos SEO, profesionales del marketing digital y especialistas en negocios con experiencia en SEO, marketing online y desarrollo web. Todos nuestros artículos pasan por un proceso editorial de varios niveles para proporcionarte la mejor calidad posible e información relevante y de utilidad. Conoce a la gente que hay detrás de la Wiki de Seobility.