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 :
- Créer six entrées cron qui s'exécutent chaque minute
- Ajouter des commandes sleep à chaque entrée pour décaler le temps d'exécution
- 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.