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
| Champ | Valeurs | Description |
|---|---|---|
| minute | 0-59 | Minute de l'heure |
| heure | 0-23 | Heure de la journée |
| jour_mois | 1-31 | Jour du mois |
| mois | 1-12 | Mois de l'année |
| jour_semaine | 0-7 | Jour 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
| Expression | Description | Exemple d'usage |
|---|---|---|
0 2 * * * | Tous les jours à 2h00 | Sauvegarde quotidienne |
30 1 * * 0 | Chaque dimanche à 1h30 | Maintenance hebdomadaire |
0 0 1 * * | Le 1er de chaque mois à minuit | Rapport mensuel |
*/15 * * * * | Toutes les 15 minutes | Monitoring |
0 6-18 * * 1-5 | Chaque heure de 6h à 18h, lun-ven | Horaires de bureau |
0 */4 * * * | Toutes les 4 heures | Synchronisation |
@reboot | Au démarrage du système | Services 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 !