Comment exécuter un Cron Job toutes les 10 secondes sous Linux ?

Publié 17 octobre 2024

Problème : Exécuter des tâches cron plus fréquemment qu'une fois par minute

Les tâches cron sous Linux s'exécutent généralement à des intervalles d'une minute ou plus. Parfois, vous devez exécuter des tâches plus souvent, comme toutes les 10 secondes. Cela peut poser problème pour les tâches qui doivent s'exécuter presque instantanément.

Utilisation de plusieurs entrées cron avec des commandes sleep

Configurer les tâches cron

Pour exécuter une tâche toutes les 10 secondes sous Linux, vous pouvez utiliser plusieurs entrées cron avec des commandes sleep. Cette méthode utilise six entrées cron qui s'exécutent chaque minute, chacune avec une durée de sommeil différente. En échelonnant les temps d'exécution, vous obtenez un intervalle de 10 secondes entre chaque exécution de tâche.

Le processus implique :

  1. Créer six entrées cron qui s'exécutent chaque minute
  2. Ajouter des commandes sleep à chaque entrée pour décaler le temps d'exécution
  3. Utiliser la même commande pour chaque entrée

Voici un exemple de ces entrées 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/

Dans cette configuration, la première entrée s'exécute au début de chaque minute. Les entrées suivantes utilisent des commandes sleep pour retarder leur exécution de 10, 20, 30, 40 et 50 secondes. Cela crée un modèle où la commande s'exécute toutes les 10 secondes tout au long de chaque minute.

Cette méthode vous permet de contourner la limite d'une minute de cron et d'exécuter votre tâche à des intervalles de 10 secondes.

Conseil: Journalisation de l'exécution des tâches cron

Pour surveiller l'exécution de vos tâches cron et vérifier qu'elles s'exécutent aux intervalles corrects, ajoutez une commande de journalisation à chaque entrée. Par exemple :

* * * * * /usr/bin/wget http://api.us/application/ && echo "$(date): Tâche exécutée" >> /var/log/cron_job.log
* * * * * sleep 10; /usr/bin/wget http://api.us/application/ && echo "$(date): Tâche exécutée" >> /var/log/cron_job.log

Cela créera un fichier journal avec des horodatages pour chaque exécution de tâche, vous aidant à suivre et à déboguer votre configuration cron.