FRFAM.COM >> Famille >> Technologie &Innovation >> Informatique

Maîtriser Crontab : Automatisez vos tâches répétitives sous Linux

Utilisez la commande crontab sous Linux pour automatiser les tâches routinières et gagner du temps. Cet outil puissant et simple, associé à des scripts, permet d'exécuter des opérations récurrentes sans intervention manuelle, tout en minimisant les erreurs humaines.

Dans ce guide complet, découvrez ce qu'est crontab, comment ajouter des tâches programmées et des exemples concrets pour une mise en œuvre immédiate.

Qu'est-ce que Crontab ?

Crontab est un démon qui s'exécute en arrière-plan sur la plupart des systèmes Linux. Il planifie et exécute des tâches automatisées à des intervalles définis. Les développeurs l'utilisent souvent pour des opérations longues en second plan, comme l'envoi d'emails en lot, la vérification de flux RSS, les sauvegardes ou les rappels.

Commandes Crontab de base

Chaque utilisateur dispose de son propre fichier crontab listant ses tâches actives. Voici les commandes essentielles :

  • crontab -l : Liste toutes les tâches crontab.
  • crontab -e : Édite le fichier crontab.
  • crontab -r : Supprime toutes les entrées du fichier crontab.

Ces commandes s'appliquent au crontab de l'utilisateur courant. Pour un autre utilisateur, ajoutez l'option -u avec sudo, par exemple :

sudo crontab -u jdoe -e

Format des tâches Crontab

Chaque tâche occupe une ligne au format suivant :

MINUTE HEURE JOUR MOIS JOUR_SEMAINE COMMANDE

Voici les champs expliqués dans un tableau :

ÉlémentPlageDescription
Minute0-59Minute d'exécution de la tâche.
Heure0-23Heure d'exécution.
Jour1-31Jour du mois.
Mois1-12Mois d'exécution.
Jour de la semaine0-6(0=dimanche) Jour de la semaine.
Commande-Toute commande Linux exécutable en terminal.

Un astérisque (*) signifie "tous les". Exemple : exécution tous les soirs à 3h20 :

20 3 * * * /root/backup.sh

Valeurs multiples et intervalles

Séparez les valeurs par des virgules pour plusieurs occurrences, ex. : 20 et 50 minutes toutes les heures :

20,50 * * * * /path/to/command.sh

Utilisez */période pour des intervalles, ex. : toutes les 3 heures à la 15e minute :

15 */3 * * * /path/to/command.sh

Supprimer les sorties des tâches

Pour éviter les emails de notification, ajoutez > /dev/null 2>&1 :

0 6 15 * * /path/to/backup.sh > /dev/null 2>&1

Ajouter des tâches Crontab

Utilisez crontab -e pour éditer :

crontab -e

Cela ouvre un éditeur comme nano. Ajoutez/modifiez des lignes. Sauvegardez avec Ctrl+O, Entrée, puis quittez avec Ctrl+X. Les changements sont appliqués immédiatement.

Raccourci pour ajouter une tâche

Ajoutez une tâche sans éditeur, ex. tous les dimanches à 14h :

(crontab -l; echo "0 14 * * 0 /path/to/command.sh") | crontab

Lister et supprimer le crontab

Lister : crontab -l
Supprimer tout : crontab -r

Exemple : Jouer des sons

Rappel toutes les 2 heures :

0 */2 * * * aplay /home/myuser/myalert.wav

Chanson le vendredi à 17h :

0 17 * * 5 aplay /home/myuser/friday_song.mp3

Exemple : Sauvegarder avec Rsync

Automatisez les sauvegardes vers un serveur distant pour sécuriser vos données importantes.

Exemple : Vérifier la disponibilité de sites

Script PHP pour alerter par email si des sites sont inaccessibles. Créez /home/myuser/check_sites.php :

<?php
// Email de notification
$email = 'moi@mondomaine.com';
// URLs à vérifier
$urls = [
    'https://apexpl.io',
    'https://google.com',
    'https://un-site-junk-qui-espere-ne-jamais-exister.com'
];
$down = [];
foreach ($urls as $url) {
    $status = check_url($url);
    if ($status != 200) {
        $down[] = $url;
    }
}
if (count($down) > 0) {
    mail($email, "Urgent - Sites Down!", "Sites en panne : <br>" . implode("<br>", $down));
}
exit(0);

/**
 * Vérifie l'URL via cURL
 */
function check_url(string $url): int {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $status;
}
?>

Exécutez toutes les 5 minutes :

*/5 * * * * /usr/bin/php /home/myuser/check_sites.php > /dev/null 2>&1

Automatisez votre quotidien !

Ce guide vous a présenté crontab, son format, ses commandes et des exemples pratiques. Exploitez-le pour simplifier vos routines Linux.

[]