Profitez de la commande Linux crontab pour automatiser diverses tâches banales et répétitives, vous simplifiant la vie. Cet outil excellent et facile à utiliser, combiné à quelques scripts, peut non seulement automatiser toutes sortes de tâches, mais aussi aider à éviter de simples erreurs humaines ou des oublis.
Vous apprendrez ici ce qu'est crontab, comment ajouter des tâches automatisées et quelques exemples concrets.
Crontab est un processus démon qui s'exécute en arrière-plan sur presque toutes les machines Linux et est utilisé pour planifier et exécuter des tâches automatisées à des intervalles de temps définis. Il est également souvent utilisé par les développeurs de logiciels pour exécuter des tâches chronophages en arrière-plan.
Cela peut être n'importe quoi, y compris, mais sans s'y limiter, l'envoi d'e-mails par lots, la vérification de votre flux Twitter, l'exécution de sauvegardes ou simplement l'exécution d'un rappel.
Chaque utilisateur Linux sur la machine a son propre fichier crontab, qui contient ses tâches crontab actives. Voici quelques commandes de terminal de base que vous utiliserez pour afficher et modifier le fichier crontab :
Les commandes ci-dessus seront pour le fichier crontab de l'utilisateur actuel. Si vous avez besoin de modifier le fichier crontab d'un autre utilisateur, utilisez simplement le -u option. Par exemple, vous pouvez modifier le jdoe le fichier crontab de l'utilisateur avec la commande :
sudo crontab -ujdoe -e
Chaque tâche crontab se compose d'une ligne et est formatée comme ci-dessous :
MINUTE HEURE JOUR MOIS JOUR DE LA SEMAINE COMMANDE
Le tableau ci-dessous explique les différents éléments du travail crontab :
Vous pouvez utiliser un astérisque (*) dans n'importe lequel des champs pour indiquer un caractère générique, ce qui signifie que la tâche crontab s'exécutera quelle que soit cette période. Par exemple, le travail crontab ci-dessous s'exécutera tous les soirs à 3h20 exactement :
20 3 * * * /root/backup.sh
Chaque période peut également comprendre plusieurs éléments. Vous pouvez spécifier les valeurs exactes en les séparant par une virgule, et le travail crontab ci-dessous s'exécutera toutes les heures à 20 et 50 minutes après l'heure :
20,50 * * * * /path/to/command.sh
Cependant, si vous souhaitez exécuter le travail crontab à des intervalles spécifiques dans une période de temps, vous pouvez utiliser */PERIOD , et la tâche crontab ci-dessous s'exécutera automatiquement à 15 minutes après l'heure toutes les trois heures :
15 */3 * * * /path/to/command.sh
Tout dépendant, vous souhaiterez peut-être éliminer toutes les sorties des tâches crontab afin qu'elles ne se retrouvent pas dans le dossier de messagerie de votre système. Vous pouvez le faire en ajoutant > /dev/null 2>&1 à n'importe quel travail crontab. Par exemple :
0 6 15 * * /path/to/backup.sh> /dev/null 2>&1
Généralement, la méthode la plus utilisée pour ajouter ou modifier des tâches crontab est la méthode crontab -e commander. Exécutez cette commande dans le terminal :
crontab -e
Cela ouvrira un éditeur de texte tel que nano avec le contenu de votre fichier crontab. Chaque tâche crontab réside sur une ligne et vous pouvez ajouter, modifier et supprimer des lignes à votre guise. Une fois terminé, enregistrez et fermez le fichier en appuyant sur Ctrl+W , suivi du Y et Entrez clés, qui activeront immédiatement toutes les tâches crontab dans le fichier.
Au lieu de modifier manuellement le fichier crontab, il existe une seule commande rapide que vous pouvez exécuter pour ajouter un travail. Par exemple, si vous souhaitez ajouter cette tâche crontab qui s'exécute tous les dimanches à 14h :
0 14 * * 0 /path/to/command.sh
Vous pouvez ajouter le travail à votre fichier crontab avec la seule commande :
(crontab -l; echo "0 14 * * 0 /path/to/command.sh";) | crontab
La commande ci-dessus répertorie simplement tous les travaux actuellement dans votre fichier crontab, imprime le nouveau travail et dirige le tout dans crontab remplaçant son contenu.
Vous pouvez lister toutes les tâches actuellement actives dans votre fichier crontab avec la commande :
crontab -l
Vous pouvez également supprimer toutes les tâches crontab et vider le contenu de votre fichier crontab avec la commande :
crontab -r
Besoin d'un rappel rapide toutes les deux heures pendant que vous travaillez pour vous faire savoir que le temps s'est écoulé ? Récupérez votre clip audio préféré dans presque tous les formats (.wav, .mp4, n'importe quoi), et s'il est enregistré sur (par exemple) /home/myuser/myalert.wav faites-le jouer automatiquement avec le travail crontab :
0 */2 * * * aplay /home/myuser/myalert.wav
Que diriez-vous de vous offrir un bon départ du travail de la semaine avec votre chanson préférée jouant automatiquement à 17h00 tous les vendredis après-midi ? Prenez votre extrait de chanson préféré et, s'il est enregistré, dites /home/myuser/friday_song.mp4 vous ajouteriez le travail crontab :
0 17 * * 5 aplay /home/myuser/friday_song.mp4
L'une des nombreuses excellentes utilisations de crontab est la possibilité de sauvegarder automatiquement vos fichiers sur un serveur distant. Réduisez considérablement votre risque de perdre à nouveau des données importantes grâce à cet excellent didacticiel rsync.
Peut-être souhaitez-vous vérifier automatiquement toutes les cinq minutes si divers sites sont en ligne ou non, et être averti par e-mail si certains sont en panne. Voici un petit script PHP astucieux qui fera exactement cela.
// Adresse e-mail pour notifier les sites en panne
$email ='[email protected]';
// Définir les URL à vérifier
$urls =[
'https://apexpl.io',
'https://google.com',
'https://un-site-junk-qui-espère-ne-jamais-exister.com'
] ;
// Parcourir les URL
$vers le bas =[] ;
foreach ($urls comme $url) {
// Vérifier l'URL
$status =check_url($url);
si ($statut !=200) {
$vers le bas[] =$url ;
}
}
// Envoyer un e-mail si nous avons des sites en panne
si (count($down)> 0) {
mail($email, "Urgent - Sites Down!", "Votre bot a détecté que les sites suivants sont actuellement down :
" .implose("
", $vers le bas));
}
// Sortir
sortie(0);
/**
* Vérifier l'URL
*/
fonction check_url(string $url):int
{
// Envoi via cURL
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, vrai);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, vrai);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, vrai);
$réponse =curl_exec($ch);
// Obtenir le statut et fermer la connexion
$status =curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
// Retourner
retourne $statut ;
}
Modifiez simplement l'adresse e-mail et les URL souhaitées à vérifier en haut du fichier, et enregistrez-les quelque part comme /home/myuser/check_sites.php . Pour que ce script s'exécute toutes les cinq minutes et vous avertisse par e-mail de tout site en panne, ajoutez la tâche crontab :
*/5 * * * * /usr/bin/php /home/myuser/check_sites.php>
/dev/null 2>&1
Avec cet article, vous aurez, espérons-le, compris la puissance d'automatisation de crontab et comment il peut être utilisé pour automatiser de nombreuses tâches banales et répétitives dans votre vie.
Vous avez appris ce qu'est crontab, le fichier crontab, comment les tâches crontab sont formatées et quelques exemples concrets de la façon dont il peut être utilisé.