Cron exécute des commandes selon un calendrier récurrent sans shell interactif. L’automatisation répète aussi bien les comportements corrects que les erreurs ; testez donc la commande, employez des chemins explicites, limitez les privilèges et planifiez la journalisation et la notification des échecs avant de la programmer.
Utilisation des Processus · Leçon 8
Tâches cron
Découvrez comment créer, examiner, tester et exploiter en toute sécurité des tâches récurrentes avec cron.
Lire une entrée de crontab
Une entrée de crontab utilisateur contient cinq champs temporels suivis d’une commande :
30 8 * * * /home/pete/scripts/change_wallpaper
De gauche à droite, les champs sont la minute, l’heure, le jour du mois, le mois et le jour de la semaine. Cet exemple s’exécute à 08 h 30 selon le fuseau horaire applicable au démon cron. Un astérisque signifie chaque valeur permise dans ce champ.
Lorsque les champs du jour du mois et du jour de la semaine sont tous deux restreints, de nombreuses implémentations de cron exécutent la commande si l’un ou l’autre correspond. Confirmez la sémantique locale avant de bâtir un calendrier qui utilise les deux.
Quand 30 8 * * * command s’exécute-t-il ?
Gérer une crontab utilisateur
Modifiez la crontab de l’utilisateur actuel avec :
$ crontab -e
Répertoriez les entrées installées avant et après une modification :
$ crontab -l
crontab -r supprime toute la crontab de l’utilisateur et peut le faire sans ouvrir d’éditeur. Ne l’employez pas pour retirer une seule ligne ; modifiez la crontab et vérifiez les entrées restantes.
Quelle commande répertorie les entrées cron installées de l’utilisateur actuel ?
Tenir compte de l’environnement de cron
Cron fournit généralement un environnement limité et un shell non interactif. Employez des chemins absolus pour les commandes et les fichiers, définissez explicitement les variables requises et ne dépendez pas d’alias, du répertoire actuel d’un terminal ou des fichiers de démarrage du shell.
Redirigez la sortie standard et les erreurs vers un journal contrôlé ou employez un mécanisme de notification adapté au système. Protégez les identifiants secrets par des permissions restrictives et évitez de les intégrer directement dans une commande de crontab.
Pourquoi une commande cron doit-elle employer des chemins et des paramètres d’environnement explicites ?
Tester et empêcher les chevauchements
Exécutez le script manuellement en tant que même utilisateur avec un environnement tout aussi minimal. Faites-lui renvoyer des états de sortie utiles et écrire des résultats horodatés. Après l’installation, attendez un calendrier de test inoffensif ou une exécution contrôlée, puis vérifiez l’effet réel et les journaux.
Si une exécution peut durer plus longtemps que son intervalle, concevez-la pour la concurrence ou employez un mécanisme de verrouillage tel que flock lorsqu’il est disponible :
*/5 * * * * /usr/bin/flock -n /run/user/1000/report.lock /home/pete/bin/report
Choisissez un chemin de verrou que l’utilisateur de la tâche peut créer sans risque et déterminez si les exécutions ignorées sont acceptables. Cron ne garantit pas automatiquement l’exécution d’une seule instance.
Quel risque existe lorsqu’une tâche dure plus longtemps que son intervalle de planification ?
Choisir le bon planificateur
Cron convient aux commandes récurrentes simples. Sur les hôtes systemd, les minuteurs systemd peuvent fournir l’intégration des dépendances, le rattrapage persistant, un délai aléatoire et la journalisation. Les planificateurs d’application ou de grappe peuvent être plus sûrs lorsqu’une tâche ne doit s’exécuter qu’une seule fois sur plusieurs machines.
Pourquoi cron ordinaire sur chaque hôte peut-il ne pas convenir à une tâche de grappe qui doit s’exécuter exactement une fois ?
Leçon terminée
Vous avez terminé Tâches cron
Vous savez maintenant exploiter une tâche cron récurrente avec des hypothèses explicites sur son calendrier et son exécution.
Lire les cinq champs temporels dans l’ordre défini.
Examiner et modifier les crontabs utilisateur sans supprimer les tâches sans rapport.
Définir les chemins, l’environnement, la journalisation et la gestion des identifiants secrets.
Tester en tant qu’utilisateur de la tâche et empêcher les chevauchements indésirables.
Choisir un planificateur adapté aux exigences de l’hôte et de coordination.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit