Outils pour utilisateurs

Outils du site


article:service_cron

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
article:service_cron [2026/09/24 09:58] – retestroarticle:service_cron [2026/09/24 10:03] (Version actuelle) – retestro
Ligne 29: Ligne 29:
  
 ==== Les opérateurs spéciaux ==== ==== Les opérateurs spéciaux ====
-  * **''*'' (Astérisque) :** Toutes les valeurs possibles. +  * **''*'' (Astérisque) :** Toutes les valeurs possibles (ex: un ''*'' dans le champ mois signifie "chaque mois"). 
-  * **'','' (Virgule) :** Liste de valeurs spécifiques (ex: ''1,3,5''). +  * **'','' (Virgule) :** Liste de valeurs spécifiques (ex: ''1,3,5'' dans le champ jour signifie "le 1er, le 3 et le 5"). 
-  * **''-'' (Tiret) :** Plage de valeurs (ex: ''1-5''). +  * **''-'' (Tiret) :** Plage de valeurs (ex: ''1-5'' dans le champ jour de la semaine signifie "du lundi au vendredi"). 
-  * **''/'' (Slash) :** Intervalle ou répétition (ex: ''*/15'' signifie "toutes les 15 minutes").+  * **''/'' (Slash) :** Intervalle ou répétition (ex: ''*/15'' dans le champ minute signifie "toutes les 15 minutes").
  
-===== 3. Exemples pratiques =====+==== Les raccourcis alias ==== 
 +Cron propose des alias simplifiés pour remplacer les 5 étoiles : 
 +  * ''@reboot'' : Exécute la commande une seule fois au démarrage de la machine. 
 +  * ''@daily'' ou ''@midnight'' : Une fois par jour (équivalent à ''0 0 * * *''). 
 +  * ''@weekly'' : Une fois par semaine (équivalent à ''0 0 * * 0''). 
 +  * ''@monthly'' : Une fois par mois (équivalent à ''0 0 1 * *'').
  
-^ Syntaxe ^ Description ^+===== 3. Manipuler la Crontab =====
  
-| ''0 5 * * * /usr/local/bin/backup.sh'' | Exécute le script de sauvegarde **tous les jours à 5h00 pile**. | +On ne modifie **jamais** les fichiers de cron directement dans ''/var/spool/cron/''. On utilise impérativement la commande dédiée pour éviter de corrompre la base [Chapter 2, 2.1.3].
-| ''*/10 9-17 * * 1-5 /my/script.sh'' | Exécute le script **toutes les 10 minutes, de 9h à 17h, du lundi au vendredi**. | +
-| ''0 22 * * 6 /usr/sbin/fstrim /'' | Lance un TRIM manuel sur le SSD **tous les samedis à 22h00**. |+
  
-==== Les raccourcis alias ==== +==== Commandes pour l'utilisateur courant ==== 
-  * ''@reboot'' : Exécute la commande une seule fois au démarrage de la machine. +  * **Éditer la crontab :** ''crontab -e'' (Ouvre l'éditeur par défaut, ex: Nano ou Vim). 
-  * ''@daily'' : Une fois par jour (équivalent à ''0 0 * * *'').+  * **Afficher la crontab :** ''crontab -l'' (Affiche le contenu à l'écran sans le modifier). 
 +  * **Supprimer la crontab :** ''crontab -r'' (Attention, supprime toutes vos tâches sans confirmation).
  
-===== 4. Exemple avancé : Suivi de mise à jour de Tealdeer =====+==== Commandes pour l'administrateur (Root) ==== 
 +Pour modifier la crontab d'un autre utilisateur (par exemple pour planifier une tâche sur le compte de ''pseudo_utilisateur'') : 
 +<code> 
 +sudo crontab -u pseudo_utilisateur -e 
 +</code>
  
-Voici comment vérifier **toutes les heures** si le cache locale de ''tealdeer'' (la commande ''tldr'') a été mis à jour aujourd'hui [Chapter 2, 2.1.1].+===== 4. Les dossiers Cron automatiques =====
  
-==== Étape A : Le script de vérification (ex: /home/pseudo_utilisateur/bin/check_tldr.sh) ==== +Debian propose une alternative très pratique aux lignes de commande complexes [Chapter 2, 2.7.3]. Il suffit de déposer un script exécutable dans l'un des dossiers suivants pour qu'il soit pris en charge automatiquement : 
-Ce script vérifie la date de modification du fichier de cache principal de tealdeer et compare ce jour avec la date du jour actuel.+  * ///etc/cron.hourly/ :// Les scripts y sont exécutés toutes les heures. 
 +  * ///etc/cron.daily/ :// Les scripts y sont exécutés une fois par jour [Chapter 2, 2.7.3]. 
 +  * ///etc/cron.weekly/ :// Les scripts y sont exécutés une fois par semaine. 
 +  * ///etc/cron.monthly/ :// Les scripts y sont exécutés une fois par mois. 
 + 
 +⚠️ **Règle d'or :** Les scripts déposés dans ces dossiers doivent être **exécutables** (''chmod +x'') et leur nom **ne doit pas contenir de point** (''script'' est valide, ''script.sh'' sera ignoré par l'outil ''run-parts'' qui gère ces dossiers). 
 + 
 +===== 5. Bonnes pratiques et pièges courants ===== 
 + 
 +==== 1. Utiliser des chemins absolus ==== 
 +Le piège le plus fréquent est que Cron s'exécute avec un environnement réseau et un ''$PATH'' extrêmement restreints. Il ne sait pas où se trouvent vos commandes. 
 +  * ❌ **Mauvais :** ''rsync -av /src /dest'' (Cron risque de ne pas trouver ''rsync''). 
 +  *  **Bon :** ''/usr/bin/rsync -av /src /dest'' (On indique le chemin absolu). 
 + 
 +==== 2. Gérer les sorties (Redirections) ==== 
 +Par défaut, si une tâche produit du texte à l'écran ou génère une erreur, Cron tente d'envoyer un mail local à l'utilisateur. Pour éviter d'encombrer le système de fichiers, redirigez les sorties : 
 +  * Rediriger les erreurs dans un fichier log : 
 +<code> 
 +0 2 * * * /home/pseudo_utilisateur/bin/script.sh > /var/log/mon_script.log 2>&1 
 +</code> 
 +  * Rendre la tâche totalement silencieuse (destruction des messages) : 
 +<code> 
 +0 2 * * * /home/pseudo_utilisateur/bin/script.sh > /dev/null 2>&1 
 +</code> 
 + 
 +===== 6. Exemple d'application : Suivi de mise à jour de Tealdeer ===== 
 + 
 +Pour mettre en pratique ces concepts, voici un cas concret permettant de surveiller le cache de **tealdeer** (la commande ''tldr'') [Chapter 2, 2.1.1]. L'objectif est de vérifier **toutes les heures** si l'index local a été actualisé au cours de la journée actuelle. 
 + 
 +==== Étape A : Planification dans Cron ==== 
 +Ouvrez la crontab de l'utilisateur (''crontab -e'') et ajoutez la ligne suivante tout à la fin pour exécuter la vérification toutes les heures à la minute 0 : 
 +<code> 
 +0 * * * * /bin/bash /home/pseudo_utilisateur/bin/check_tldr.sh 
 +</code> 
 + 
 +==== Étape B : Source du script de vérification ==== 
 +Enregistrez le code suivant dans le fichier ''/home/pseudo_utilisateur/bin/check_tldr.sh'' et rendez-le exécutable (''chmod +x'') :
 <code> <code>
 #!/bin/bash #!/bin/bash
Ligne 68: Ligne 112:
 TODAY=$(date +%Y-%m-%d) TODAY=$(date +%Y-%m-%d)
  
-# Comparaison+# Comparaison avec la date d'aujourd'hui
 if [ "$FILE_DATE" == "$TODAY" ]; then if [ "$FILE_DATE" == "$TODAY" ]; then
     echo "$(date '+%Y-%m-%d %H:%M:%S') - Succès : Le cache Tealdeer a bien été actualisé aujourd'hui ($FILE_DATE)." >> "$LOG_FILE"     echo "$(date '+%Y-%m-%d %H:%M:%S') - Succès : Le cache Tealdeer a bien été actualisé aujourd'hui ($FILE_DATE)." >> "$LOG_FILE"
Ligne 74: Ligne 118:
     echo "$(date '+%Y-%m-%d %H:%M:%S') - Attention : Le cache n'a pas bougé aujourd'hui (Dernière maj : $FILE_DATE)." >> "$LOG_FILE"     echo "$(date '+%Y-%m-%d %H:%M:%S') - Attention : Le cache n'a pas bougé aujourd'hui (Dernière maj : $FILE_DATE)." >> "$LOG_FILE"
 fi fi
-</code> 
- 
-==== Étape B : Planification dans Cron ==== 
-Pour exécuter ce script **toutes les heures à la minute 0**, ajoutez cette ligne dans la crontab de ''pseudo_utilisateur'' : 
-<code> 
-0 * * * * /bin/bash /home/pseudo_utilisateur/bin/check_tldr.sh 
-</code> 
- 
-===== 5. Manipuler la Crontab ===== 
- 
-On utilise impérativement la commande dédiée pour éviter de corrompre les fichiers internes [Chapter 2, 2.1.3]. 
- 
-==== Commandes pour l'utilisateur courant ==== 
-  * **Éditer la crontab :** ''crontab -e'' (Ouvre l'éditeur par défaut). 
-  * **Afficher la crontab :** ''crontab -l'' (Liste les tâches actives). 
-  * **Supprimer la crontab :** ''crontab -r'' (Supprime tout sans confirmation). 
- 
-==== Commandes pour l'administrateur (Root) ==== 
-Pour modifier la crontab d'un autre utilisateur : 
-<code> 
-sudo crontab -u pseudo_utilisateur -e 
-</code> 
- 
-===== 6. Les dossiers Cron automatiques ===== 
- 
-Il suffit de déposer un script exécutable dans l'un des dossiers suivants pour qu'il soit pris en charge automatiquement [Chapter 2, 2.7.3] : 
-  * ///etc/cron.hourly/ :// Exécution toutes les heures. 
-  * ///etc/cron.daily/ :// Exécution une fois par jour [Chapter 2, 2.7.3]. 
-  * ///etc/cron.weekly/ :// Exécution une fois par semaine. 
- 
-⚠️ **Règle d'or :** Les scripts déposés dans ces dossiers doivent être **exécutables** (''chmod +x'') et leur nom **ne doit pas contenir de point** (''script'' est valide, ''script.sh'' sera ignoré par l'utilitaire de gestion). 
- 
-===== 7. Bonnes pratiques et pièges courants ===== 
- 
-==== 1. Utiliser des chemins absolus ==== 
-Cron s'exécute avec un environnement réseau et un ''$PATH'' extrêmement restreints. 
-  * ❌ **Mauvais :** ''rsync -av /src /dest'' (Cron risque de ne pas trouver la commande). 
-  *  **Bon :** ''/usr/bin/rsync -av /src /dest'' (On indique le chemin absolu). 
- 
-==== 2. Gérer les sorties (Redirections) ==== 
-Pour éviter que Cron ne génère des mails locaux inutiles en arrière-plan, redirigez le flux vers un fichier ou détruisez-le : 
-  * Rendre la tâche totalement silencieuse : 
-<code> 
-0 2 * * * /home/pseudo_utilisateur/bin/mon_script.sh > /dev/null 2>&1 
 </code> </code>
  
article/service_cron.1790243907.txt.gz · Dernière modification : de retestro