Comment configurer une tâche cron pour s'exécuter en semaine ?

Publié 17 octobre 2024

Problème : Configurer des tâches Cron uniquement pour les jours ouvrables

Les tâches Cron sont des opérations programmées, mais parfois ces tâches doivent s'exécuter uniquement en semaine. Cela pose un défi pour configurer des tâches Cron qui s'exécutent du lundi au vendredi, en évitant les exécutions le week-end.

Configurer une tâche Cron en semaine

Spécifier les jours de la semaine dans la syntaxe Cron

Pour indiquer les jours de la semaine dans la syntaxe Cron, utilisez des chiffres (1-5) ou les noms abrégés des jours (Lun-Ven). Dans le format Cron, 1 représente lundi et 5 représente vendredi.

Exemples d'expressions Cron pour les jours de semaine :

  • 0 9 * * 1-5 : S'exécute à 9h tous les jours de la semaine
  • 30 18 * * Lun-Ven : S'exécute à 18h30 tous les jours de la semaine
  • 0 12 * * 2,4 : S'exécute à midi les mardis et jeudis

Conseil: Utiliser des valeurs d'intervalle pour les jours de la semaine

Vous pouvez utiliser des valeurs d'intervalle pour exécuter une tâche certains jours de la semaine. Par exemple, 0 9 * * 1-5/2 exécute la tâche à 9h les lundis, mercredis et vendredis.

Créer une tâche Cron pour les jours de semaine

Pour configurer une tâche Cron en semaine :

  1. Ouvrez le terminal.
  2. Tapez crontab -e pour modifier le fichier crontab.
  3. Choisissez votre éditeur de texte si on vous le demande.
  4. Ajoutez votre expression Cron sur une nouvelle ligne.
  5. Sauvegardez et quittez l'éditeur.

La commande pour modifier le fichier crontab est :

crontab -e

Cela ouvre le fichier crontab pour l'utilisateur actuel. Pour modifier le crontab d'un autre utilisateur ou avec les permissions root, utilisez :

sudo crontab -u nom_utilisateur -e

Remplacez "nom_utilisateur" par le compte utilisateur souhaité.

Exemple : Exécuter un script toutes les 2 minutes en semaine

Créer l'expression Cron

Pour exécuter un script toutes les 2 minutes en semaine de 9h à 14h, utilisez cette syntaxe Cron :

*/2 9-14 * * 1-5 /chemin/vers/votre/script.sh

Voici ce que signifie chaque partie de cette expression :

  • */2 : S'exécute toutes les 2 minutes
  • 9-14 : De 9h à 14h (14h est l'heure 14 au format 24 heures)
  • * * : N'importe quel jour du mois et n'importe quel mois
  • 1-5 : Du lundi au vendredi

Configurer la tâche Cron pour les jours de semaine

Pour configurer cette tâche Cron :

  1. Ouvrez votre terminal
  2. Tapez crontab -e pour modifier votre fichier crontab
  3. Ajoutez cette ligne :
*/2 9-14 * * 1-5 /chemin/vers/votre/script.sh

Remplacez /chemin/vers/votre/script.sh par le chemin complet de votre script. Par exemple :

*/2 9-14 * * 1-5 /home/utilisateur/scripts/monscript.sh

Assurez-vous que votre script a les bonnes permissions pour s'exécuter. Vous pouvez les définir avec :

chmod +x /chemin/vers/votre/script.sh

Cette tâche Cron exécutera votre script toutes les 2 minutes de 9h à 14h, du lundi au vendredi.

Conseil: Enregistrer la sortie de la tâche Cron

Pour suivre l'exécution de votre tâche Cron et détecter d'éventuelles erreurs, vous pouvez rediriger sa sortie vers un fichier de log. Modifiez l'entrée de votre tâche Cron comme ceci :

*/2 9-14 * * 1-5 /chemin/vers/votre/script.sh >> /chemin/vers/fichier.log 2>&1

Cela ajoutera à la fois la sortie standard et les messages d'erreur au fichier de log spécifié, vous aidant à surveiller les performances de la tâche et à résoudre les problèmes éventuels.