Aller au contenu principal

Automatiser avec Cron

Guide Cron sur VPS Linux RedHeberg

Le système cron est l'outil de planification par excellence sur les systèmes Linux. Il permet d'automatiser l'exécution de tâches récurrentes sur votre VPS RedHeberg, que ce soit pour des sauvegardes, de la maintenance ou des redémarrages programmés.

Comprendre la syntaxe crontab

Les 5 champs temporels

Chaque ligne du crontab suit cette structure :

# minute heure jour_mois mois jour_semaine commande
0 2 15 * * /path/to/script.sh
ChampValeursDescription
minute0-59Minute de l'heure
heure0-23Heure de la journée
jour_mois1-31Jour du mois
mois1-12Mois de l'année
jour_semaine0-7Jour de la semaine (0 et 7 = dimanche)

Caractères spéciaux

  • * : Toutes les valeurs possibles
  • , : Énumération (1,3,5)
  • - : Plage (1-5)
  • / : Intervalle (*/15 = toutes les 15 unités)

Gestion du crontab

Éditer le crontab

# Éditer le crontab de l'utilisateur actuel
crontab -e

# Éditer le crontab d'un utilisateur spécifique (en tant que root)
crontab -u username -e

# Première fois : choisir votre éditeur (recommandé: nano)
Éditeur recommandé

Lors de la première utilisation, choisissez nano (option 1) pour sa simplicité. Vous pouvez changer plus tard avec :

export EDITOR=nano

Lister les tâches cron

# Afficher le crontab actuel
crontab -l

# Afficher le crontab d'un utilisateur spécifique
crontab -u username -l

# Sauvegarder son crontab avant modification
crontab -l > ~/crontab_backup.txt

Supprimer le crontab

# Supprimer toutes les tâches cron de l'utilisateur
crontab -r

# Restaurer depuis une sauvegarde
crontab ~/crontab_backup.txt

Expressions cron courantes

ExpressionDescriptionExemple d'usage
0 2 * * *Tous les jours à 2h00Sauvegarde quotidienne
30 1 * * 0Chaque dimanche à 1h30Maintenance hebdomadaire
0 0 1 * *Le 1er de chaque mois à minuitRapport mensuel
*/15 * * * *Toutes les 15 minutesMonitoring
0 6-18 * * 1-5Chaque heure de 6h à 18h, lun-venHoraires de bureau
0 */4 * * *Toutes les 4 heuresSynchronisation
@rebootAu démarrage du systèmeServices auto-start

Cas d'usage pratiques

Sauvegarde quotidienne MySQL

# Ajouter au crontab avec crontab -e
# Sauvegarde MySQL tous les jours à 3h00
0 3 * * * mysqldump -u root -pYOUR_PASSWORD --all-databases > /backup/mysql_$(date +\%Y\%m\%d).sql 2>> /var/log/backup.log

Redémarrage serveur de jeu Minecraft

# Redémarrage du serveur Minecraft tous les jours à 4h00
0 4 * * * systemctl restart minecraft && echo "$(date): Serveur Minecraft redémarré" >> /var/log/minecraft_restart.log

# Alternative avec script personnalisé
0 4 * * * /home/minecraft/restart_server.sh >> /var/log/minecraft.log 2>&1

Script de nettoyage système

# Nettoyage des logs et fichiers temporaires chaque dimanche à 2h00
0 2 * * 0 /usr/bin/find /tmp -type f -mtime +7 -delete && /usr/bin/find /var/log -name "*.log" -mtime +30 -delete 2>> /var/log/cleanup.log

# Nettoyage du cache APT chaque semaine
0 3 * * 0 /usr/bin/apt-get clean && /usr/bin/apt-get autoclean >> /var/log/apt_clean.log 2>&1

Monitoring et alertes

# Vérification de l'espace disque toutes les heures
0 * * * * df -h | grep -E '9[0-9]%|100%' && echo "$(date): Espace disque critique" | mail -s "Alerte VPS YOUR_SERVER_IP" admin@exemple.com

# Redémarrage automatique d'Apache si down
*/5 * * * * systemctl is-active apache2 > /dev/null || systemctl restart apache2

Gestion des logs et sorties

Redirection des sorties

# Rediriger stdout vers un fichier
0 2 * * * /path/to/script.sh > /var/log/script.log

# Rediriger stderr vers un fichier
0 2 * * * /path/to/script.sh 2> /var/log/script_errors.log

# Rediriger stdout ET stderr vers le même fichier
0 2 * * * /path/to/script.sh > /var/log/script.log 2>&1

# Ajouter à un fichier existant (append)
0 2 * * * /path/to/script.sh >> /var/log/script.log 2>&1

# Supprimer toute sortie
0 2 * * * /path/to/script.sh > /dev/null 2>&1
Variables d'environnement

Les tâches cron s'exécutent avec un environnement minimal. Définissez les variables nécessaires :

# En haut du crontab
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash

# Ou dans la commande directement
0 2 * * * /bin/bash -c "source /etc/profile && /path/to/script.sh"

Crontab système vs utilisateur

Crontab utilisateur

  • Fichiers stockés dans /var/spool/cron/crontabs/
  • Chaque utilisateur a son propre crontab
  • Commandes exécutées avec les permissions de l'utilisateur

Crontab système

# Éditer le crontab système (root uniquement)
sudo vim /etc/crontab

# Exemple de ligne dans /etc/crontab (avec champ utilisateur)
0 2 * * * root /usr/bin/apt update && /usr/bin/apt upgrade -y
Service cron sur VPS RedHeberg

Le service cron est préinstallé et activé sur tous nos VPS Linux. Vérifiez son statut :

sudo systemctl status cron

Le système cron transforme votre VPS RedHeberg en assistant automatisé, capable d'effectuer des tâches de maintenance cruciales pendant que vous dormez !