Désactiver le préchargeur
Explorez, Apprenez et Maîtrisez

Documentation et Tutoriels - Hébergement Web Caramania.Ca

avec Nos Documentation et Tutoriels

Découvrez notre vaste bibliothèque de documentation et de tutoriels conçus pour vous aider à tirer le meilleur parti des services Caramania.Ca. Que vous soyez un débutant cherchant à configurer votre premier site web ou un utilisateur avancé désireux d'explorer des fonctionnalités plus complexes, nos guides pas à pas vous accompagneront à chaque étape. Simplifiez la gestion de vos services, trouvez des solutions rapides à vos problèmes, et approfondissez vos connaissances grâce à notre centre de ressources complet.

Documentation / Tutoriels Linux / Administration / Configurer les tâches Cron sur Linux (Ubuntu, Debian, AlmaLinux)
Bahanos
09/01/2025
Débutant
15 minutes

Prérequis

  • Un serveur Linux (Ubuntu, Debian, AlmaLinux 9, Rocky Linux 9)
  • Accès root ou sudo

Cron permet de planifier des tâches récurrentes sur Linux : sauvegardes, maintenance, scripts personnalisés. Ce guide explique la syntaxe et les bonnes pratiques.

1. Installer Cron

Installation (Ubuntu/Debian)
# Installer cron (généralement déjà présent)
apt update
apt install -y cron

# S'assurer que le service est actif
systemctl enable --now cron
Installation (AlmaLinux/Rocky Linux)
# Installer cronie (généralement déjà présent)
dnf install -y cronie

# S'assurer que le service est actif
systemctl enable --now crond

2. Syntaxe Cron

Format d'une entrée cron
# ┌───────────── minute (0 - 59)
# │ ┌───────────── heure (0 - 23)
# │ │ ┌───────────── jour du mois (1 - 31)
# │ │ │ ┌───────────── mois (1 - 12)
# │ │ │ │ ┌───────────── jour de la semaine (0 - 6) (0 = dimanche)
# │ │ │ │ │
# * * * * * commande à exécuter

3. Exemples courants

Exemples de planification
# Toutes les minutes
* * * * * /chemin/script.sh

# Toutes les 5 minutes
*/5 * * * * /chemin/script.sh

# Toutes les heures à :00
0 * * * * /chemin/script.sh

# Tous les jours à 3h00
0 3 * * * /chemin/script.sh

# Tous les lundis à 9h00
0 9 * * 1 /chemin/script.sh

# Le 1er de chaque mois à minuit
0 0 1 * * /chemin/script.sh

# Du lundi au vendredi à 8h00
0 8 * * 1-5 /chemin/script.sh

# Toutes les 30 minutes de 9h à 17h
*/30 9-17 * * * /chemin/script.sh

# Deux fois par jour (8h et 20h)
0 8,20 * * * /chemin/script.sh

4. Éditer le crontab

Commandes crontab
# Éditer le crontab de l'utilisateur courant
crontab -e

# Lister les tâches cron
crontab -l

# Supprimer toutes les tâches
crontab -r

# Éditer le crontab d'un autre utilisateur (root)
crontab -u nom_utilisateur -e

# Lister les tâches d'un autre utilisateur
crontab -u nom_utilisateur -l

5. Raccourcis spéciaux

Mots-clés cron
@reboot     # Au démarrage du serveur
@yearly     # Une fois par an (0 0 1 1 *)
@annually   # Identique à @yearly
@monthly    # Une fois par mois (0 0 1 * *)
@weekly     # Une fois par semaine (0 0 * * 0)
@daily      # Une fois par jour (0 0 * * *)
@midnight   # Identique à @daily
@hourly     # Toutes les heures (0 * * * *)

# Exemples
@reboot /chemin/script_demarrage.sh
@daily /chemin/backup.sh
@hourly /chemin/check_status.sh

6. Variables d'environnement

Variables dans crontab
# Définir des variables en haut du crontab
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@votredomaine.com

# Les tâches cron n'ont pas le même PATH qu'un shell interactif !
# Utilisez toujours des chemins absolus
0 3 * * * /usr/bin/python3 /home/user/script.py

7. Redirection des sorties

Gérer les logs
# Ignorer toutes les sorties
0 3 * * * /chemin/script.sh > /dev/null 2>&1

# Logger dans un fichier
0 3 * * * /chemin/script.sh >> /var/log/mon_script.log 2>&1

# Logger avec la date
0 3 * * * /chemin/script.sh >> /var/log/mon_script.log 2>&1 && echo "$(date): Script exécuté" >> /var/log/mon_script.log

# Séparer stdout et stderr
0 3 * * * /chemin/script.sh >> /var/log/output.log 2>> /var/log/error.log
Conseil

Redirigez toujours les sorties ! Par défaut, cron envoie un email pour chaque sortie, ce qui peut saturer votre boîte mail.

8. Dossiers cron.d

Fichiers cron système
# Les scripts dans ces dossiers s'exécutent automatiquement
ls /etc/cron.hourly/   # Toutes les heures
ls /etc/cron.daily/    # Tous les jours
ls /etc/cron.weekly/   # Toutes les semaines
ls /etc/cron.monthly/  # Tous les mois

# Créer un script cron quotidien
cat > /etc/cron.daily/mon_script << 'EOF'
#!/bin/bash
# Mon script quotidien
echo "Exécuté le $(date)"
EOF
chmod +x /etc/cron.daily/mon_script

# Fichiers personnalisés dans /etc/cron.d/
cat > /etc/cron.d/mon_job << 'EOF'
# Format : minute heure jour mois jour_semaine UTILISATEUR commande
0 3 * * * root /chemin/script.sh
EOF

9. Exemples pratiques

Tâches courantes
# Backup MySQL tous les jours à 3h
0 3 * * * mysqldump -u root -p'motdepasse' --all-databases | gzip > /backup/mysql-$(date +\%Y-\%m-\%d).sql.gz

# Nettoyer les fichiers temp de plus de 7 jours
0 4 * * * find /tmp -type f -mtime +7 -delete

# Renouveler les certificats Let's Encrypt
0 3 * * * certbot renew --quiet

# Synchroniser des fichiers
*/30 * * * * rsync -avz /source/ /destination/

# Vérifier l'espace disque
0 */6 * * * df -h | mail -s "Rapport espace disque" admin@domaine.com

# Redémarrer un service chaque nuit
0 4 * * * systemctl restart apache2

10. Dépannage

Debugger cron (Ubuntu/Debian)
# Voir les logs cron
tail -f /var/log/syslog | grep CRON
# Ou
journalctl -u cron -f

# Vérifier si cron tourne
systemctl status cron

# Tester un script manuellement
/bin/bash -x /chemin/script.sh

# Simuler l'environnement cron
env -i /bin/bash --noprofile --norc -c '/chemin/script.sh'
Debugger cron (AlmaLinux/Rocky Linux)
# Voir les logs cron
tail -f /var/log/cron
# Ou
journalctl -u crond -f

# Vérifier si crond tourne
systemctl status crond

# Tester un script manuellement
/bin/bash -x /chemin/script.sh

# Simuler l'environnement cron
env -i /bin/bash --noprofile --norc -c '/chemin/script.sh'

11. Bonnes pratiques

  • Utilisez toujours des chemins absolus
  • Redirigez les sorties vers des fichiers log
  • Testez vos scripts manuellement avant de les planifier
  • Ajoutez des commentaires pour expliquer chaque tâche
  • Évitez d'exécuter trop de tâches à minuit (surcharge)
  • Utilisez flock pour éviter les exécutions parallèles
  • Surveillez les logs pour détecter les erreurs
Éviter les exécutions parallèles avec flock
# Empêcher qu'un script s'exécute en double
*/5 * * * * flock -n /tmp/mon_script.lock /chemin/script.sh
Cron configuré !

Vous pouvez maintenant automatiser vos tâches récurrentes. N'oubliez pas de surveiller les logs pour vous assurer que tout fonctionne correctement.

💬 Écrivez-nous sur Messenger !