¿Cómo ejecutar un cron job cada 10 segundos en Linux?

Publicado 17 de octubre de 2024

Problema: Ejecutar Tareas Cron con Mayor Frecuencia que Una Vez por Minuto

Las tareas cron en Linux generalmente se ejecutan en intervalos de un minuto o más. A veces, necesitas ejecutar tareas con mayor frecuencia, como cada 10 segundos. Esto puede ser un problema para tareas que necesitan ejecutarse casi instantáneamente.

Uso de Múltiples Entradas Cron con Comandos Sleep

Configuración de las Tareas Cron

Para ejecutar una tarea cada 10 segundos en Linux, puedes usar múltiples entradas cron con comandos sleep. Este método utiliza seis entradas cron que se ejecutan cada minuto, cada una con una duración de sleep diferente. Al espaciar los tiempos de ejecución, puedes obtener un intervalo de 10 segundos entre cada ejecución de la tarea.

El proceso implica:

  1. Crear seis entradas cron que se ejecuten cada minuto
  2. Agregar comandos sleep a cada entrada para desplazar el tiempo de ejecución
  3. Usar el mismo comando para cada entrada

Aquí tienes un ejemplo de estas entradas cron:

* * * * * /usr/bin/wget http://api.us/application/
* * * * * sleep 10; /usr/bin/wget http://api.us/application/
* * * * * sleep 20; /usr/bin/wget http://api.us/application/
* * * * * sleep 30; /usr/bin/wget http://api.us/application/
* * * * * sleep 40; /usr/bin/wget http://api.us/application/
* * * * * sleep 50; /usr/bin/wget http://api.us/application/

En esta configuración, la primera entrada se ejecuta al inicio de cada minuto. Las siguientes entradas utilizan comandos sleep para retrasar su ejecución en 10, 20, 30, 40 y 50 segundos. Esto crea un patrón donde el comando se ejecuta cada 10 segundos a lo largo de cada minuto.

Este método te ayuda a superar el límite de un minuto de cron y ejecutar tu tarea en intervalos de 10 segundos.

Consejo: Registro de la Ejecución de Tareas Cron

Para monitorear la ejecución de tus tareas cron y verificar que se estén ejecutando en los intervalos correctos, agrega un comando de registro a cada entrada. Por ejemplo:

* * * * * /usr/bin/wget http://api.us/application/ && echo "$(date): Tarea ejecutada" >> /var/log/cron_job.log
* * * * * sleep 10; /usr/bin/wget http://api.us/application/ && echo "$(date): Tarea ejecutada" >> /var/log/cron_job.log

Esto creará un archivo de registro con marcas de tiempo para cada ejecución de la tarea, ayudándote a rastrear y depurar tu configuración de cron.