Crear tareas repetitivas

Publicado el 17.07.2021 a las 17:48

Crear tareas repetitivas

⚫ Sintaxis básica de un Cron Job

⚫ Carácteres comodines en un Cron Job

🟣 Ejecutar cada 5 minutos en el segundo 1

🟣 Ejecutar cada día a la 6 y a las 18

🟣 Ejecutar cada martes a las 0 horas

🟣 Ejecutar cada lunes, miércoles y viernes a las 19 horas

⚫ Comandos básicos para los Cron Jobs

⚫ Firebase schedule functions

⚫ Servicios en la nube para programar Cron Jobs

🟣 cronit.app

🟣 cron-job.org

Crear tareas repetitivas

A veces queremos realizar una misma tarea cada día a una determinada hora. Para automatizarlo yo uso servicios en Windows o si lo quiero realizar en la nube utilizo los Cron Job.

En sistemas unix, un programa que corre en segundo plano similar a un servicio en Windows es conocido como Cron. Un comando que programa una tarea en un momento específico repetidamente en un sistema Unix es un Cron Job

Dicho de otra forma, Cron Job es una utilidad de Linux que establece un comando o secuencia de comandos de horarios en tu servidor para que algunas tareas se ejecuten automáticamente a una hora y fecha especificadas. Una tarea cron es la tarea programada en sí

Sintáxix básica de un Cron Job

La sintásis de un Cron Job es muy sencilla, primero se escribe cuando se quiere que se ejecute un script y a continuación se le espedifica el script

* * * * * /bin/sh script.sh

El significado de cada uno de los asteriscos (*) es:

  1. Segundo: segundo de la hora en que se ejecutará el comando, que va de 0 a 59.
  2. Minuto: minuto de la hora en que se ejecutará el comando, que va de 0 a 59.
  3. Hora: la hora en que se ejecutará el comando, que va de 0 a 23.
  4. Día del mes: en qué día del mes deseas que se ejecute el comando, que va del 1 al 31.
  5. Mes: en qué mes se ejecutará el comando especificado, que va del 1 al 12.
  6. Día de la semana: en qué día de la semana deseas que se ejecute un comando, que va de 0 a 7. Siendo 0 y 7 el domingo.

Por ejemplo, si queremos que se ejecute un script llamado backup cada minuto en el segundo 20 la instrucción sería:

20 * * * * /bin/sh backup.sh

Carácteres comodines en un Cron Job

Los carácterese comodines para los tiempo son:

  • Asterisco (*): para definir todos los parámetros de programación.
  • Coma (,): para mantener dos o más tiempos de ejecución de un solo comando.
  • Guión (-): para determinar el intervalo de tiempo al configurar varios tiempos de ejecución de un solo comando.
  • Barra oblicua (/): para crear intervalos de tiempo predeterminados en un rango específico.
  • Último (L): para el propósito específico de determinar el último día de la semana en un mes determinado. Por ejemplo, 3L significa el último miércoles.
  • Día de la semana (W): para determinar el día de la semana más cercano de un momento determinado. Por ejemplo, 1W significa que si el 1 de un mes es un sábado, el comando se ejecutará el lunes (el 3 del mes).
  • Hash (#): para determinar el día de la semana, seguido de un número que va del 1 al 5. Por ejemplo, 1#2 significa el segundo lunes
  • Signo de interrogación (?): para dejar en blanco.

A continuación algunos ejemplos:

Ejecutar cada 5 minutos en el segundo 1

Si queremos que se ejecute un script llamado backup cada 5 minutos en el segundo 1 la instrucción sería:

1 */5 * * * /bin/sh backup.sh

También sería válido:

1 0,5,10,15,20,25,30,35,40,45,50,55 * * * /bin/sh backup.sh

Ejecutar cada día a la 6 y a las 18

Si queremos que se ejecute un script llamado backup 2 veces al día, una vez a las 6 y otra vez a las 18 la instrucción sería:

0 6,18 * * * /bin/sh backup.sh

Ejecutar cada martes a las 0 horas

Si queremos que se ejecute un script llamado backup todos los martes a las 0 horas la instrucción sería:

0 0 * * 2 /bin/sh backup.sh

Ejecutar cada lunes, miércoles y viernes a las 19 horas

Si queremos que se ejecute un script llamado backup todos los lunes, miércoles y viernes a las 19 horas:

0 19 * * 1,3,5 /bin/sh backup.sh

Comandos básicos para los Cron Jobs

  • $ crontab e – para crear y editar un archivo crontab.
  • $ crontab -u nombre de usuario -e – para editar el archivo crontab de otro usuario con acceso de superusuario.
  • $ crontab -l: para ver la lista de archivos crontab de los usuarios actuales.
  • $ crontab -r: para eliminar los archivos crontab.
  • $ crontab -a nombredearchivo: para instalar el nombre de archivo como un archivo crontab (en algunos sistemas, –a no es necesario).

Firebase schedule functions

En Firebase puedes programar hasta 3 Cron Job por proyecto de manera gratuita.


Por ejemplo, si quieres que se ejecute un determinado código a las 0 horas de la zona horaria de Europe/Madrid sería:

    exports.scheduledFunctionCrontab = functions.pubsub
    .schedule('0 0 * * *')
    .timeZone('Europe/Madrid') // El usuario puede escoger el timezone - por defecto es America/Los_Angeles
    .onRun((context) => {
      //Aquí el código que quieres que se ejecute
      return null;
    });
  

Puedes consultar la documentación oficial de Firebase schedule functions aquí

Servicios en la nube para programar Cron Jobs

cronit.app

Un servicio muy potente donde tendrás un tir gratuito bastante generoso. Conoce sus detalles 👉aquí

cron-job.org

Tengo pendiente estudiar un servicio totalmente gratuito en cron-job.org el cuál dice que puedes crear hasta 60 Cron Jobs por hora totalmente gratis. Esto es a fecha que estoy escribiendo este post.


Mantendré actualizado esta entrada si hago algún descubirmiento con este servicio.


Hasta luego 🖖

fjmduran.com v 17.0.1