Crear tareas repetitivas

Crear tareas repetitivas o cron jobs

17.07.2021 a las 19:48

⚡⚡⚡ Crear tareas repetitivas o cron jobs

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


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

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

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

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

Además de lo anterior, 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.

Algunos ejemplos para comprender mejor lo anterior

  • Si queremos que se ejecute un script llamado backup cada día a las 18:30 la instrucción sería:

    30 18 * * * /bin/sh backup.sh
  • 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
  • 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
  • Si queremos que se ejecute un script llamado backup todos los lunes, miércoles y viernes a las 19 horas martes a las 0 horas la instrucción sería:

    0 19 * * 1,3,5 /bin/sh backup.sh
  • Yo creo que ya queda claro...

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í

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 ese a la fecha que estoy escribiendo este post.


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

Saludos 👋,

Servicios

Software

IoT

Digitalización

Aplicaciones móviles

Consultoría

fjmduran.com v0.1.2