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.
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.
Chaque utilisateur dispose de son propre fichier crontab listant ses tâches actives. Voici les commandes essentielles :
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 -eChaque tâche occupe une ligne au format suivant :
MINUTE HEURE JOUR MOIS JOUR_SEMAINE COMMANDEVoici les champs expliqués dans un tableau :
| Élément | Plage | Description |
|---|---|---|
| Minute | 0-59 | Minute d'exécution de la tâche. |
| Heure | 0-23 | Heure d'exécution. |
| Jour | 1-31 | Jour du mois. |
| Mois | 1-12 | Mois d'exécution. |
| Jour de la semaine | 0-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.shSéparez les valeurs par des virgules pour plusieurs occurrences, ex. : 20 et 50 minutes toutes les heures :
20,50 * * * * /path/to/command.shUtilisez */période pour des intervalles, ex. : toutes les 3 heures à la 15e minute :
15 */3 * * * /path/to/command.shPour éviter les emails de notification, ajoutez > /dev/null 2>&1 :
0 6 15 * * /path/to/backup.sh > /dev/null 2>&1Utilisez crontab -e pour éditer :
crontab -eCela 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.
Ajoutez une tâche sans éditeur, ex. tous les dimanches à 14h :
(crontab -l; echo "0 14 * * 0 /path/to/command.sh") | crontabLister : crontab -l
Supprimer tout : crontab -r
Rappel toutes les 2 heures :
0 */2 * * * aplay /home/myuser/myalert.wavChanson le vendredi à 17h :
0 17 * * 5 aplay /home/myuser/friday_song.mp3Automatisez les sauvegardes vers un serveur distant pour sécuriser vos données importantes.
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>&1Ce guide vous a présenté crontab, son format, ses commandes et des exemples pratiques. Exploitez-le pour simplifier vos routines Linux.
[]