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

Prochaine révision
Révision précédente
article:service_cron [2026/09/24 09:48] – créée retestroarticle:service_cron [2026/09/24 10:03] (Version actuelle) – retestro
Ligne 10: Ligne 10:
  
 ==== Les deux types de crontab ==== ==== Les deux types de crontab ====
-  * **La Crontab Utilisateur :** Chaque utilisateur (y compris ''bernard'' ou ''root'') possède sa propre crontab. Les tâches s'exécutent avec les privilèges de cet utilisateur.+  * **La Crontab Utilisateur :** Chaque utilisateur (y compris ''pseudo_utilisateur'' ou ''root'') possède sa propre crontab. Les tâches s'exécutent avec les privilèges de cet utilisateur.
   * **La Crontab Système :** Située dans ///etc/crontab//, elle est réservée à l'administrateur et nécessite de spécifier explicitement l'utilisateur qui lancera la commande [Chapter 2, 2.7.3].   * **La Crontab Système :** Située dans ///etc/crontab//, elle est réservée à l'administrateur et nécessite de spécifier explicitement l'utilisateur qui lancera la commande [Chapter 2, 2.7.3].
  
Ligne 33: Ligne 33:
   * **''-'' (Tiret) :** Plage de valeurs (ex: ''1-5'' dans le champ jour de la semaine signifie "du lundi au vendredi").   * **''-'' (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'' dans le champ minute 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 ===== 
- 
-^ Syntaxe ^ Description ^ 
- 
-| ''0 5 * * * /usr/local/bin/backup.sh'' | Exécute le script de sauvegarde **tous les jours à 5h00 pile**. | 
-| ''*/10 9-17 * * 1-5 /my/script.sh'' | Exécute le script **toutes les 10 minutes, de 9h à 17h, du lundi au vendredi**. | 
-| ''0 0 1 * * apt update'' | Exécute une mise à jour du cache des paquets **le 1er jour de chaque mois à minuit**. | 
-| ''0 22 * * 6 /usr/sbin/fstrim /'' | Lance un TRIM manuel sur le SSD **tous les samedis à 22h00**. | 
  
 ==== Les raccourcis alias ==== ==== Les raccourcis alias ====
Ligne 50: Ligne 41:
   * ''@monthly'' : Une fois par mois (équivalent à ''0 0 1 * *'').   * ''@monthly'' : Une fois par mois (équivalent à ''0 0 1 * *'').
  
-===== 4. Manipuler la Crontab =====+===== 3. Manipuler la Crontab =====
  
 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]. 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].
Ligne 56: Ligne 47:
 ==== Commandes pour l'utilisateur courant ==== ==== Commandes pour l'utilisateur courant ====
   * **Éditer la crontab :** ''crontab -e'' (Ouvre l'éditeur par défaut, ex: Nano ou Vim).   * **Éditer la crontab :** ''crontab -e'' (Ouvre l'éditeur par défaut, ex: Nano ou Vim).
-  * **Afficher la crontab :** ''crontab -l'' (Lise le contenu à l'écran sans le modifier).+  * **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).   * **Supprimer la crontab :** ''crontab -r'' (Attention, supprime toutes vos tâches sans confirmation).
  
 ==== Commandes pour l'administrateur (Root) ==== ==== Commandes pour l'administrateur (Root) ====
-Pour modifier la crontab d'un autre utilisateur (par exemple pour planifier une tâche sur le compte de ''bernard'') :+Pour modifier la crontab d'un autre utilisateur (par exemple pour planifier une tâche sur le compte de ''pseudo_utilisateur'') :
 <code> <code>
-sudo crontab -u bernard -e+sudo crontab -u pseudo_utilisateur -e
 </code> </code>
  
-===== 5. Les dossiers Cron automatiques =====+===== 4. Les dossiers Cron automatiques =====
  
 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 : 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 :
   * ///etc/cron.hourly/ :// Les scripts y sont exécutés toutes les heures.   * ///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 (ex: le script de nettoyage d'APT) [Chapter 2, 2.7.3].+  * ///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.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.   * ///etc/cron.monthly/ :// Les scripts y sont exécutés une fois par mois.
Ligne 75: Ligne 66:
 ⚠️ **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). ⚠️ **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).
  
-===== 6. Bonnes pratiques et pièges courants =====+===== 5. Bonnes pratiques et pièges courants =====
  
 ==== 1. Utiliser des chemins absolus ==== ==== 1. Utiliser des chemins absolus ====
Ligne 81: Ligne 72:
   * ❌ **Mauvais :** ''rsync -av /src /dest'' (Cron risque de ne pas trouver ''rsync'').   * ❌ **Mauvais :** ''rsync -av /src /dest'' (Cron risque de ne pas trouver ''rsync'').
   *  **Bon :** ''/usr/bin/rsync -av /src /dest'' (On indique le chemin absolu).   *  **Bon :** ''/usr/bin/rsync -av /src /dest'' (On indique le chemin absolu).
-//Astuce : Tapez ''which rsync'' ou ''which curl'' dans votre terminal pour connaître leur chemin absolu.// 
  
 ==== 2. Gérer les sorties (Redirections) ==== ==== 2. Gérer les sorties (Redirections) ====
Ligne 87: Ligne 77:
   * Rediriger les erreurs dans un fichier log :   * Rediriger les erreurs dans un fichier log :
 <code> <code>
-0 2 * * * /usr/local/bin/script.sh > /var/log/mon_script.log 2>&1+0 2 * * * /home/pseudo_utilisateur/bin/script.sh > /var/log/mon_script.log 2>&1
 </code> </code>
   * Rendre la tâche totalement silencieuse (destruction des messages) :   * Rendre la tâche totalement silencieuse (destruction des messages) :
 <code> <code>
-0 2 * * * /usr/local/bin/script.sh > /dev/null 2>&1+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> 
 +#!/bin/bash 
 + 
 +# Chemin vers le fichier d'index du cache tealdeer 
 +CACHE_FILE="$HOME/.cache/tealdeer/tldr-pages/index.json" 
 +LOG_FILE="$HOME/.cache/tealdeer/check_status.log" 
 + 
 +if [ ! -f "$CACHE_FILE" ]; then 
 +    echo "$(date '+%Y-%m-%d %H:%M:%S') - Cache inexistant. Lancement requis : tldr --update" >> "$LOG_FILE" 
 +    exit 1 
 +fi 
 + 
 +# Récupération de la date de modification du fichier (format YYYY-MM-DD) 
 +FILE_DATE=$(date -r "$CACHE_FILE" +%Y-%m-%d) 
 +TODAY=$(date +%Y-%m-%d) 
 + 
 +# Comparaison avec la date d'aujourd'hui 
 +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" 
 +else 
 +    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
 </code> </code>
  
article/service_cron.1790243323.txt.gz · Dernière modification : de retestro