Cette rubrique explique le fonctionnement de cron, des concepts de base et de la syntaxe aux stratégies de planification avancées et aux cas d'utilisation. Vous apprendrez comment fonctionne le service cron, ainsi que la création, la gestion et le débogage des tâches cron.
Principes de base et composants de Cron
Qu'est-ce que cron ?
cron est un planificateur de tâches présent dans les systèmes Linux et Unix qui exécute des actions à des moments précis. Il permet aux utilisateurs d'exécuter automatiquement des scripts, des commandes ou des logiciels à des intervalles définis. cron est idéal pour les tâches récurrentes, telles que les sauvegardes de données et les mises à jour système.
Fonctionnement de cron
cron utilise des fichiers crontab (tables cron). Ces fichiers de configuration contiennent les commandes et leurs plannings d'exécution correspondants. Chaque utilisateur peut disposer de son propre fichier crontab dans son répertoire personnel, et il existe également un fichier crontab au niveau du système pour les tâches gérées par l'administrateur.
Le démon cron vérifie périodiquement ces fichiers crontab, analyse leurs plannings et commandes, puis les exécute aux heures programmées.
Composants de Cron
Démon Cron : processus en arrière-plan qui vérifie, planifie et exécute les tâches spécifiées dans les fichiers
crontab.-
Fichiers Crontab :
Crontab au niveau utilisateur : chaque utilisateur peut modifier ses propres tâches planifiées en exécutant la commande
crontab -e. Ces tâches s'appliquent uniquement à l'utilisateur actuel.Crontab au niveau système : situé dans
/etc/crontab, ce fichier est généralement géré par un administrateur système pour les tâches relatives au système.
Syntaxe Crontab : chaque ligne d'un fichier
crontabse compose de six champs : minute, heure, jour du mois, mois, jour de la semaine et commande à exécuter.
Expression Cron
L'exemple suivant montre une entrée simple dans un fichier crontab :
# .---------------- minute
# | .------------- hour
# | | .---------- day of month
# | | | .------- month
# | | | | .---- day of week (Sunday=0 or 7)
# | | | | |
# * * * * * user-name command to be executed
30 04 * * * root /path/to/daily_backup.sh
Cette tâche cron est configurée pour exécuter le script daily_backup.sh en tant qu'utilisateur root tous les jours à 4 h 30.
Utilisez un chemin absolu pour toutes les commandes et tous les fichiers de script.
Valeurs des champs
Ce tableau décrit les plages de valeurs acceptées et les caractères spéciaux pris en charge pour chaque champ d'une expression cron.
|
Champ |
Obligatoire |
Plage de valeurs |
Caractères spéciaux |
|
Minute |
Oui |
[0, 59] |
|
|
Heure |
Oui |
[0, 23] |
|
|
Jour du mois |
Oui |
[1, 31] |
|
|
Mois |
Oui |
[1, 12] ou JAN-DEC |
|
|
Jour de la semaine |
Oui |
Utilise la plage standard Unix [0, 6], où 0 et 7 représentent tous deux le dimanche (SUN). |
|
Caractères spéciaux
|
Caractère spécial |
Description |
Exemple |
|
|
Correspond à n'importe quelle valeur pour le champ. |
|
|
|
Spécifie une plage. |
|
|
|
Spécifie un intervalle. |
|
|
|
Utilisé dans le champ jour du mois ou jour de la semaine pour signifier « aucune valeur spécifique ». |
|
|
|
Utilisé dans le champ jour du mois ou jour de la semaine pour signifier « dernier ». |
|
|
|
Spécifie le jour ouvrable (du lundi au vendredi) le plus proche d'un jour donné. Peut être utilisé uniquement dans le champ jour du mois. |
|
|
|
Spécifie le « Nième » jour de la semaine d'un mois. Utilisé dans le champ jour de la semaine. |
|
Ne combinez pas le paramètre L avec une liste ou une plage, car cela pourrait entraîner des erreurs d'analyse ou des conflits logiques.
Expressions Cron courantes
|
Expression Cron |
Description |
Scénario |
|
|
Exécute une tâche toutes les minutes. |
Utilisez cette option pour vérifier votre configuration cron. |
|
|
Exécute une tâche tous les jours à 00 h 00. |
Convient aux réinitialisations quotidiennes du système ou aux sauvegardes de données. |
|
|
Exécute une tâche tous les jours à 02 h 00. |
|
|
|
Exécute une tâche tous les jours à 01 h 00. |
|
|
|
Exécute une tâche tous les jours à 06 h 00. |
Adapté à la mise à jour des rapports de données le matin. |
|
|
Exécute une tâche tous les jours à 12 h 00. |
Convient aux synchronisations de données en milieu de journée ou aux e-mails de rappel quotidiens. |
|
|
Exécute une tâche du lundi au vendredi à 18 h 00. |
Convient à la sauvegarde des données à la fin de la journée de travail. |
|
|
Exécute une tâche tous les jours à 21 h 00. |
Convient au nettoyage du système ou à la sauvegarde des données de transaction après les heures de bureau. |
|
|
Exécute une tâche le premier jour de chaque mois à 00 h 00. |
Convient à la génération de rapports financiers, commerciaux ou autres rapports métier mensuels. |
|
|
Exécute une tâche le 1er janvier et le 1er juillet à 00 h 00. |
Convient aux tâches semestrielles importantes, telles que l'archivage des données ou la restructuration organisationnelle. |
|
|
Exécute une tâche le premier jour de chaque mois à 14 h 15. |
Convient à la surveillance et à l'application des correctifs de sécurité sur les systèmes informatiques. |
|
|
Exécute une tâche tous les dimanches à 00 h 00. |
Convient au nettoyage et à l'optimisation des données le week-end. |
|
|
Exécute une tâche le 1er janvier à 00 h 00. |
Convient à l'exécution de scripts de démarrage annuels importants, tels qu'une réinitialisation du système ou un archivage critique des données. |
|
|
Exécute une tâche toutes les 10 minutes. |
Convient à la surveillance continue des systèmes ou services critiques. |
Pour plus d'exemples et un éditeur interactif, consultez https://crontab.guru/.
Comparaisons de Cron
Comparaison entre les systèmes d'exploitation
Fonctionnalités de base
|
Fonctionnalité |
Linux/Unix cron |
macOS cron |
BSD cron |
Planificateur de tâches Windows (Task Scheduler) |
|
Intervalle d'exécution minimal |
1 minute |
1 minute |
1 minute |
1 minute |
|
Emplacement du fichier de configuration par défaut |
/etc/crontab |
/usr/lib/cron/tabs/ |
/etc/crontab |
S/O |
|
Prise en charge de la configuration au niveau utilisateur |
Prise en charge |
Prise en charge |
Prise en charge |
S/O |
Caractères spéciaux
|
Caractère spécial |
Linux/Unix cron |
macOS cron |
BSD cron |
Planificateur de tâches Windows (Task Scheduler) |
|
* (toutes les valeurs) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
, (liste de valeurs) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
- (plage) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
/ (étape) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
L (dernier) |
Pris en charge par certaines distributions |
Non pris en charge |
Non pris en charge |
S/O |
|
W (jour ouvrable) |
Pris en charge par certaines distributions |
Non pris en charge |
Non pris en charge |
S/O |
|
# (Nième jour ouvrable du mois) |
Pris en charge par certaines distributions |
Non pris en charge |
Non pris en charge |
S/O |
|
? (n'importe quelle valeur) |
Pris en charge par certaines distributions |
Non pris en charge |
Non pris en charge |
S/O |
Fonctionnalités avancées
|
Fonctionnalité |
Linux/Unix cron |
macOS cron |
BSD cron |
Planificateur de tâches Windows (Task Scheduler) |
|
Prise en charge des variables d'environnement |
Prise en charge limitée |
Prise en charge limitée |
Prise en charge limitée |
Entièrement pris en charge |
|
Gestion des tâches manquées |
Aucune gestion automatique |
Aucune gestion automatique |
Aucune gestion automatique |
Politiques configurables |
|
Journalisation |
syslog |
syslog |
syslog |
Observateur d'événements |
|
Planification à la seconde près |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Pris en charge |
|
Configuration via interface graphique |
Aucune |
Aucune |
Aucune |
Disponible |
|
Dépendance des tâches |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Pris en charge |
|
Déclencheurs réseau |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Pris en charge |
|
Intégration de la gestion de l'alimentation |
Non pris en charge |
Non pris en charge |
Non pris en charge |
Pris en charge |
Considérations
-
Linux/Unix, macOS et BSD :
Assurez-vous que les autorisations de fichiers sont correctement définies.
Tenez compte de la manière dont les variables d'environnement sont héritées.
Utilisez des chemins absolus.
-
Planificateur de tâches Windows :
Propose un éventail plus large d'options de déclenchement.
Prend en charge un contrôle granulaire des autorisations.
S'intègre aux événements système.
-
Compatibilité multiplateforme :
Utilisez l'ensemble de fonctionnalités communes minimal pour les tâches planifiées multiplateformes.
Utilisez des formats horaires de base et évitez les caractères spéciaux.
Envisagez d'utiliser un outil de planification multiplateforme tel que Jenkins.
Comparaison entre les frameworks
Syntaxe de base
|
Fonctionnalité |
Spring Framework |
Quartz |
Linux cron |
Jenkins |
Kubernetes CronJob |
|
Planification à la seconde près |
Pris en charge (facultatif) |
Pris en charge |
Non pris en charge |
Pris en charge |
Non pris en charge |
|
Champ année |
Facultatif |
Pris en charge |
Non pris en charge |
Pris en charge |
Non pris en charge |
|
Intervalle minimal |
1 seconde |
1 seconde |
1 minute |
1 seconde |
1 minute |
|
Prise en charge des fuseaux horaires |
Prise en charge |
Prise en charge |
Utilise le fuseau horaire du système |
Prise en charge |
Prise en charge |
Caractères spéciaux
|
Caractère spécial |
Spring Framework |
Quartz |
Linux cron |
Jenkins |
Kubernetes CronJob |
|
* (toutes les valeurs) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
, (liste de valeurs) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
- (plage) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
/ (étape) |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
Prise en charge |
|
? (n'importe quelle valeur) |
Prise en charge |
Prise en charge |
Non pris en charge |
Prise en charge |
Non pris en charge |
|
L (dernier) |
Prise en charge |
Prise en charge |
Partiellement pris en charge |
Prise en charge |
Non pris en charge |
|
W (jour ouvrable) |
Prise en charge |
Prise en charge |
Partiellement pris en charge |
Prise en charge |
Non pris en charge |
|
# (Nième jour ouvrable du mois) |
Prise en charge |
Prise en charge |
Non pris en charge |
Prise en charge |
Non pris en charge |
Cas d'utilisation
|
Framework |
Cas d'utilisation |
|
Spring Framework |
- Idéal pour l'intégration de projets Java - Pour les projets nécessitant une prise en charge des transactions - Pour une intégration approfondie avec l'écosystème Spring |
|
Quartz |
- En tant que système de planification autonome - Pour un contrôle précis des tâches - Pour des exigences de planification complexes |
|
Linux cron |
- Pour les tâches simples au niveau du système - Dans les environnements mono-machine - Pour les tâches planifiées de base |
|
Jenkins |
- Pour les pipelines CI/CD - Pour les workflows complexes - Pour les workflows nécessitant une interface de gestion |
|
Kubernetes CronJob |
- Pour les tâches dans les environnements conteneurisés - Pour les applications cloud natives - Pour les jobs nécessitant une haute disponibilité et une évolutivité |
Considérations
-
Recommandations :
Choisissez un framework adapté à l'échelle de votre projet.
Tenez compte des coûts de maintenance et de la familiarité de l'équipe avec l'outil.
Évaluez vos besoins en matière de performances et de fiabilité.
-
Considérations de compatibilité :
La syntaxe des expressions cron peut varier légèrement d'un framework à l'autre.
Vérifiez la compatibilité des expressions lors des migrations.
Tenez compte des différences de gestion des fuseaux horaires.
-
Surveillance et maintenance :
Mettez en place un système de surveillance complet.
Collectez et analysez les journaux.
Définissez un plan de reprise après sinistre.
Cas d'utilisation
Sauvegardez automatiquement un fichier texte spécifique dans un autre répertoire tous les jours à 23 h 00 afin de garantir la sécurité des données et d'éviter toute perte.
Points d'attention
Vérifiez que le chemin du fichier source (
/path/to/original/file.txt) et le chemin de sauvegarde (/path/to/backup/file_backup.txt) sont corrects.Assurez-vous que le répertoire de destination existe. Si ce n'est pas le cas, créez-le ou ajoutez une commande de création de répertoire à la tâche cron.
Vérifiez que l'utilisateur exécutant la tâche cron dispose des autorisations de lecture sur le fichier source et des autorisations d'écriture sur le répertoire de destination.
Consultez régulièrement les fichiers de sauvegarde et les journaux pour vous assurer que la tâche cron s'exécute correctement et que les fichiers de sauvegarde sont valides.
Procédure
Modifiez la tâche cron : ouvrez un terminal et exécutez la commande
crontab -epour modifier les tâches cron de l'utilisateur actuel.-
Ajoutez la tâche cron : insérez la ligne suivante dans le fichier crontab :
0 23 * * * cp /path/to/original/file.txt /path/to/backup/file_backup.txtExplication :
0 23 * * *: exécute la tâche tous les jours à 23 h 00.cp /path/to/original/file.txt /path/to/backup/file_backup.txt: copie le fichierfile.txtvers le répertoire de destination et l'enregistre sous le nomfile_backup.txt.
-
Enregistrez et fermez :
Dans l'éditeur Nano, appuyez sur
Ctrl+X, puis surYpour confirmer, et enfin surEnterpour enregistrer et quitter.Dans l'éditeur Vi ou Vim, saisissez
:wqpuis appuyez surEnterpour enregistrer et quitter.
Foire aux questions
Afficher les journaux cron
Les exécutions des tâches cron sont généralement enregistrées dans le journal système. Ces journaux indiquent si une tâche cron a été déclenchée :
grep CRON /var/log/syslog
Cette commande affiche tous les journaux liés à cron, y compris les enregistrements d'exécution des tâches cron.
Délais d'expiration des tâches cron
-
Solutions :
Optimisez le script : affinez la logique du script pour réduire son temps d'exécution.
Divisez la tâche : si possible, fractionnez-la en plusieurs tâches plus petites.
Utilisez un délai d'expiration : intégrez l'utilitaire
timeoutà la commande de votre tâche cron pour limiter la durée maximale d'exécution du script. Par exemple,0 5 * * * timeout 300 /path/to/script.shlimite l'exécution du script à 300 secondes.
Commande de test simple
Avant de configurer une tâche cron complexe, utilisez une commande de test simple pour vérifier qu'elle se déclenche correctement. Par exemple, configurez une tâche qui ajoute la date et l'heure actuelles à un fichier toutes les minutes :
* * * * * date >> /path/to/date_output.txt
Après quelques minutes, consultez le fichier date_output.txt pour vérifier qu'un nouvel horodatage est ajouté chaque minute.
Rediriger la sortie pour les tests
Pour tester une tâche cron, ajoutez une redirection de sortie à la commande. Cela permet de diriger la sortie standard (stdout) et les erreurs standard (stderr) vers un fichier journal, afin de vérifier l'exécution du script et d'examiner sa sortie.
30 4 * * * /path/to/your-script.sh > /path/to/logfile.log 2>&1
Consultez le fichier /path/to/logfile.log pour examiner la sortie du script et d'éventuelles erreurs.
Fréquence d'exécution des tâches cron
-
Recommandations de configuration :**
Évitez une fréquence excessive : une planification d'exécution trop fréquente peut nuire aux performances du système.
Configurez selon vos besoins : les tâches simples et routinières, comme les sauvegardes, ne nécessitent souvent qu'une exécution quotidienne, tandis que les tâches de surveillance peuvent devoir s'exécuter toutes les heures ou plus fréquemment.
Tenez compte de la charge système : planifiez les tâches gourmandes en ressources pendant les périodes de faible charge système.
Autres conseils de dépannage
Redirection de la sortie : redirigez la sortie et les erreurs de votre tâche cron vers un fichier journal pour faciliter le dépannage. Par exemple :
30 4 * * * /path/to/job.sh > /path/to/job.log 2>&1Notifications par e-mail : si une tâche cron génère une sortie ou une erreur, le démon cron envoie un e-mail de notification. Assurez-vous que votre service de messagerie système est correctement configuré, ou configurez explicitement la livraison des e-mails au sein de la tâche cron.
Problèmes de chemin : les chemins absolus sont généralement plus fiables que les chemins relatifs. Utilisez des chemins absolus dans vos tâches cron autant que possible.
Modification et affichage des tâches cron : utilisez
crontab -epour modifier les tâches cron etcrontab -lpour afficher toutes les tâches cron de l'utilisateur actuel. Cela vous aide à vous assurer que vos tâches sont correctement configurées.
La tâche cron ne s'exécute pas selon la planification
-
Causes et solutions :
Expression cron incorrecte : vérifiez le format de l'expression cron. Assurez-vous que les champs d'heure et de date sont corrects.
Autorisations de script insuffisantes : assurez-vous que le script dispose des autorisations d'exécution nécessaires. Utilisez
chmod +x /path/to/script.shpour les accorder.Problèmes d'environnement : les tâches cron s'exécutent dans un environnement minimal et peuvent ne pas charger la configuration complète du shell de votre utilisateur. Utilisez des chemins absolus pour les commandes dans votre script, ou définissez explicitement les variables d'environnement requises dans le script lui-même.
Vérification des journaux : consultez le journal cron, généralement situé dans
/var/log/cronou /var/log/syslog (selon le système), pour obtenir des informations sur le déclenchement et d'éventuelles erreurs. Vérifiez également tous les journaux de redirection de sortie que vous avez configurés.
Confirmation de la configuration de la tâche cron
Vérifiez la syntaxe cron : utilisez crontab -e pour modifier votre fichier crontab et assurez-vous que les champs temporels sont correctement définis. L'ordre des champs est le suivant :
minute hour day-of-month month day-of-week command
Assurez-vous que chaque champ est correct.
Sur la plupart des systèmes Linux, le service cron (démon) doit être en cours d'exécution pour exécuter les tâches. Vous pouvez vérifier l'état du service à l'aide de l'une des commandes suivantes :
sudo service cron status
Ou :
sudo systemctl status cron
Si le service n'est pas en cours d'exécution, démarrez-le :
sudo service cron start
Ou :
sudo systemctl start cron
Accordez les autorisations d'exécution du script : assurez-vous que votre fichier de script dispose des autorisations d'exécution. Accordez-les à l'aide de la commande suivante :
chmod +x /path/to/your-script.sh
Afficher toutes les tâches cron d'un utilisateur
La commande crontab -l répertorie les tâches cron de l'utilisateur actuel. Cron est un planificateur de tâches basé sur le temps dans les systèmes d'exploitation de type Unix qui exécute automatiquement des commandes ou des scripts planifiés.
-
Notes :
Seules les tâches cron de l'utilisateur actuel sont répertoriées. Pour afficher les tâches cron d'autres utilisateurs, vous avez généralement besoin des privilèges root ou des autorisations système appropriées.
Si aucune tâche cron n'est configurée pour l'utilisateur, la commande
crontab -lpeut ne renvoyer aucune sortie ou afficher un message indiquant que le crontab est vide.
Répertorier les tâches cron dans un crontab
Pour répertorier les tâches cron de l'utilisateur actuel, exécutez la commande crontab -l. Cette commande affiche toutes les tâches cron définies dans le fichier crontab de l'utilisateur actuel.
-
Notes :
Autorisations : les utilisateurs réguliers ne peuvent afficher et modifier que leurs propres tâches cron. L'utilisateur root ou les utilisateurs disposant des autorisations appropriées peuvent afficher et modifier les tâches cron de tous les utilisateurs.
Environnement : les commandes exécutées par cron s'exécutent dans un environnement minimal, où de nombreuses variables d'environnement spécifiques à l'utilisateur peuvent ne pas être chargées par défaut. Par conséquent, utilisez des chemins absolus pour les commandes et les fichiers.
Supprimer une tâche cron spécifique
Ouvrez l'éditeur crontab : exécutez la commande
crontab -e. Cela ouvre le fichier crontab de l'utilisateur actuel dans l'éditeur de texte par défaut, tel queviounano.Supprimez la tâche spécifique : dans l'éditeur, recherchez la ligne correspondant à la tâche que vous souhaitez supprimer et supprimez-la. Dans
viouvim, vous pouvez déplacer le curseur sur la ligne et appuyer surdd. Dansnano, déplacez-vous sur la ligne et appuyez surCtrl+Kpour la couper.-
Enregistrez et quittez :
Dans
viouvim, saisissez:wqet appuyez sur Entrée pour enregistrer vos modifications et quitter.Dans
nano, appuyez surCtrl+X, puis surYpour confirmer que vous souhaitez enregistrer, et enfin sur Entrée pour quitter.
Pour supprimer toutes les tâches cron de l'utilisateur actuel, utilisez la commande suivante.
Cette commande supprime instantanément toutes les tâches sans invite de confirmation. Utilisez-la avec une extrême prudence.
crontab -r
-
Notes :
Sauvegarde : avant de modifier ou de supprimer des tâches cron, il est recommandé de sauvegarder votre crontab. Vous pouvez enregistrer vos tâches actuelles dans un fichier à l'aide de
crontab -l > crontab_backup.txt.Prudence : la suppression ou la modification de tâches cron peut affecter le fonctionnement du système ou la fonctionnalité de l'application. Assurez-vous de comprendre l'objectif d'une tâche avant de la modifier.
Résoudre l'erreur « not allowed to use crontab »
-
Connectez-vous à l'instance ECS en tant qu'utilisateur root.
Pour plus d'informations, consultez Se connecter à une instance Linux à l'aide de Workbench.
-
Exécutez les commandes suivantes pour vérifier l'existence des fichiers cron.allow ou cron.deny :
find /etc/cron.allow find /etc/cron.denyL'autorisation d'un utilisateur à exécuter la commande crontab dépend des fichiers /etc/cron.allow et /etc/cron.deny, comme détaillé ci-dessous.
Cron.allow existe
Cron.deny existe
Utilisateurs crontab autorisés
Non
Non
Seul l'utilisateur root peut utiliser la commande crontab.
Oui
Non
Seuls les utilisateurs répertoriés dans le fichier cron.allow peuvent utiliser la commande crontab.
Non
Oui
Tous les utilisateurs non répertoriés dans le fichier cron.deny peuvent utiliser la commande crontab.
Remarque
Si le fichier cron.deny est vide, tous les utilisateurs peuvent utiliser la commande crontab.
Oui
Oui
Seuls les utilisateurs répertoriés dans le fichier cron.allow peuvent utiliser la commande crontab.
Remarque
Le fichier cron.allow est prioritaire sur le fichier cron.deny. Dans ce cas, le fichier cron.deny n'a aucun effet.
-
Selon vos besoins, modifiez le fichier cron.allow ou cron.deny.
Si le fichier cron.allow n'existe pas et que le nom d'utilisateur de l'utilisateur non-root figure dans le fichier cron.deny, supprimez le nom d'utilisateur de cron.deny et enregistrez le fichier.
Si le fichier cron.allow existe, ajoutez le nom d'utilisateur de l'utilisateur non-root au fichier cron.allow et enregistrez le fichier.
-
Redémarrez le service cron pour que les modifications prennent effet :
systemctl restart crond.service Basculez vers l'utilisateur non-root et exécutez à nouveau la commande crontab pour vérifier qu'elle peut être exécutée avec succès.
Plages et utilisation des champs cron
-
Le champ Day-of-week est le cinquième champ d'une expression cron et spécifie les jours de la semaine auxquels une tâche s'exécute.
Nombres : 1-7 (1 = dimanche, 2 = lundi, ..., 7 = samedi)
Abréviations : SUN, MON, TUE, WED, THU, FRI, SAT
-
Exemples de formats courants :
MON-FRI: s'exécute tous les jours du lundi au vendredi.MON,WED,FRI: s'exécute tous les lundis, mercredis et vendredis.MON-WED,SAT: s'exécute du lundi au mercredi et également le samedi.2-6: s'exécute du lundi au vendredi (en utilisant des nombres).SUN,SAT: s'exécute tous les week-ends (samedi et dimanche).
-
Utilisation avancée :
SUN#1: le premier dimanche du mois.6L: le dernier vendredi du mois.*/2: tous les deux jours.MON#2: le deuxième lundi du mois.
-
Notes :
Lorsque vous utilisez des abréviations pour les jours de la semaine, elles ne sont pas sensibles à la casse. Par exemple,
MONéquivaut àmon.Le caractère
?est utilisé pour éviter les conflits lorsque vous spécifiez à la fois un jour du mois et un jour de la semaine.Lors de l'utilisation de
Let#, sachez que toutes les implémentations cron ne les supportent pas. Assurez-vous qu'ils n'entraînent pas de combinaisons de dates invalides.Notez que lors de l'utilisation de nombres pour les jours de la semaine, 1 représente le dimanche. Cela peut sembler contre-intuitif car de nombreux systèmes utilisent 0 ou 7 pour le dimanche. Consultez toujours la documentation de votre système.
Utilisation du caractère 'L'
Dans le champ day-of-month
-
Utilisé seul :
L= Le dernier jour du mois.Exemple :
0 0 L * ?s'exécute à minuit le dernier jour de chaque mois.Il gère automatiquement les mois de longueurs variables, y compris les années bissextiles.
-
Utilisé avec un décalage :
L-n= Le nième jour avant le dernier jour du mois.Exemple :
0 0 L-2 * ?s'exécute à minuit l'avant-dernier jour de chaque mois.
Dans le champ day-of-week
-
Utilisé seul :
L= Samedi (le dernier jour de la semaine).Exemple :
0 0 ? * Ls'exécute à minuit tous les samedis.
-
Utilisé avec un nombre :
nL= Le dernier jour de la semaine n du mois.Exemple :
6Lindique le dernier vendredi du mois.Exemple :
2Lindique le dernier lundi du mois.
-
Utilisé avec une abréviation de jour de la semaine :
XXXL= Le dernier jour spécifié de la semaine du mois.Exemple :
FRILindique le dernier vendredi du mois.Exemple :
MONLindique le dernier lundi du mois.
Notes :
-
Évitez les combinaisons :
Le caractère L ne doit pas être utilisé avec d'autres plages ou listes.
Exemples incorrects :
L,15ouL-3,15.
-
Adaptation aux jours du mois :
L s'adapte automatiquement aux mois de longueurs variables.
Il gère correctement le mois de février lors d'une année bissextile.
-
Utilisation du jour de la semaine :
Lors de l'utilisation de L dans le champ Day-of-week, définissez le champ Day-of-month sur
?.Cette pratique permet d'éviter d'éventuels conflits de dates.
-
Conditions d'exécution :
Si le dernier jour de la semaine spécifié n'existe pas dans un mois donné, la tâche ne s'exécutera pas.
Par exemple, février peut ne pas avoir de cinquième vendredi.
Corriger l'erreur « errors in crontab file »
Pour résoudre ce problème, connectez-vous à l'instance pour corriger le format du fichier crontab ou effectuez un redimensionnement du disque cloud si le disque est plein.
-
Connectez-vous à votre instance ECS.
Pour plus d'informations, consultez Méthodes de connexion aux instances ECS.
-
Vérifiez si le format de la tâche cron dans le fichier crontab est correct.
Si le format est correct, passez à l'étape 3.
-
Si le format est incorrect, corrigez-le comme suit :

-
Exécutez la commande suivante pour vérifier l'utilisation du disque :
df -hLe système affiche des informations similaires à ce qui suit. Par exemple, Use% indique l'utilisation de la partition /dev/xvda1.
Si l'utilisation du disque est proche de 100 %, l'espace disque est insuffisant. Nous vous recommandons de redimensionner le disque cloud. Pour plus d'informations, consultez Vue d'ensemble du redimensionnement des disques cloud.
[root@ ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 2.7G 17G 15% / tmpfs 498M 0 498M 0% /dev/shm