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

Comment utiliser Crontab pour automatiser les tâches répétitives sous Linux

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.

Qu'est-ce que Crontab ?

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.

Commandes Crontab de base

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 :

  • crontab-l --- Liste toutes les tâches crontab.
  • crontab -e --- Modifiez le fichier crontab.
  • crontab -r --- Supprimez toutes les entrées du 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 

Format des tâches Crontab

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 :

Élément Plage Description
Minute0 - 59La minute d'exécution de la tâche crontab à.Hour0 - 23L'heure d'exécution de la tâche crontab à.Day1 - 31Le jour du mois d'exécution de la tâche crontab à.Month1 - 12Le mois d'exécution de la tâche crontab à.Weekday0 - 6The jour de la semaine pour exécuter le travail crontab à.Command Toute commande Linux que vous pouvez exécuter sur le terminal.

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 

Plusieurs valeurs

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 

Maintenir le silence des tâches Crontab

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 

Ajouter des tâches Crontab

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.

Raccourci pour ajouter des tâches

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.

Liste/suppression du fichier Crontab

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 

 Exemple :Jouez des sons !

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 

Exemple :Sauvegarder des fichiers avec Rsync

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.

Exemple :Vérifier si les sites sont en ligne

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 

Automatisez votre vie !

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é.


[]