Linux : Les services système

Mettre en place des tâches régulières

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Grâce à crontab, tout utilisateur pourra mettre en place des tâches récurrentes automatiques. Dans cette vidéo, vous verrez comment programmer crontab correctement.
08:03

Transcription

Alors la crontab système, elle est super pratique pour tout ce qui va concerner, ben le système, justement. Mais elle va pas du tout être adaptée dans le cas où un utilisateur va vouloir réaliser des opérations de façon régulière, tout simplement que il faut être root pour aller écrire dans ce répertoire /etc/cron.quelque chose, donc du coup ça ne sera adapté vraiment que pour le système. Pour les utilisateurs, on a ce qu'on va appeler la crontab. La crontab, c'est le tableau de cron, utilisateur par utilisateur. Si je fais un ls -l de /etc/cron.*, alors je mets ls -d, si je mets pas le d, le ls m'affiche le contenu des répertoires, quand il y a des répertoires passés en paramètres, là, je veux pas afficher le contenu des répertoires, je veux afficher le nom des fichiers et des répertoires, c'est pas leur contenu, si j'avais pas mis de -d, il m'aurait affiché le contenu de cron.daily, ce qui est pas ce que je voulais. Donc là, je vois, j'ai donc les crontab système, j'ai affiché en plus quel fichier /etc/cron.deny. Ce fichier-là, c'est le fichier qui va me donner la liste des utilisateurs à qui l'on interdit de mettre en place une crontab personnelle. Ici, si je regarde son contenu, donc cron.deny, il n'y a rien dedans, ça veut dire que tous les utilisateurs de mon système auront le droit de mettre en place une crontab qui leur est personnelle. Tous les utilisateurs du système pourront programmer des tâches qui vont s'exécuter de façon régulière dans la machine, donc c'est là où on va mettre les limitations. Comment est-ce qu'on va programmer ça ? Eh bien pour ça, je vais me déconnecter de l'utilisateur root, je vais me connecter en tant que l'utilisateur yves. Voilà, je me déconnecte de l'utilisateur root, je vais faire Ctrl+L pour effacer la page. id, qui je suis, je suis bien l'utilisateur yves, et, donc je n'ai pas de droit particulier sur la machine. Si je veux regarder actuellement quelles sont les tâches que j'ai programmé dans ma crontab, je vais faire crontab -l pour lister les tâches de ma crontab. Et on voit que j'ai pas de crontab, donc il n'y a rien de programmé pour yves. C'est l'occasion de mettre quelque chose, donc je vais faire quoi ? Je vais faire contab -e pour mettre en place ma crontab. Donc là, qu'est-ce qui se passe ? Là, il m'affiche un fichier vide, en réalité, il me lance vi sur un fichier vide. Là, il va me demander que j'écrive la crontab que je veux réaliser. Alors la crontab, elle a une syntaxe qui est assez particulière et à laquelle il va falloir faire très attention parce qu'il y a quelques pièges derrière. La syntaxe, ça va être la suivante : Je fais i pour insérer des caractères, je vais mettre un # pour le commenter, pour éviter que ce soit interprété, mais j'ai différentes colonnes dans mon fichier qui vont être séparées par des blancs, des espaces ou des tabulations. La première colonne va concerner les minutes. La deuxième colonne, les heures, la colonne d'après, ça va être le jour, la quatrième colonne, donc on a la première min heures jour, ça va être le mois de l'année, et la dernière colonne, ça va être le jour, mais cette fois de la semaine. jourdelasemaine, j'attache tout histoire qu'on le voit bien, et la dernière colonne contient, la tâche à réaliser, la commandeàexécuter. Donc j'ai une première commande qui est les minutes, les heures, le jour, le mois, le jour de la semaine, et la commande à exécuter. Et donc, qu'est-ce que veulent dire ces commandes-là ? Toutes les minutes, crontab va regarder les minutes courantes tout d'abord, et il va regarder si dans la crontab de mon utilisateur, les minutes courantes correspondent aux minutes que j'aurais mises ici. Si oui, il va regarder si l'heure courante correspond à l'heure qui est donnée dans la crontab. Si ça correspond, il va regarder celui-là, il va regarder celui-là, il va regarder celui-là, et si j'ai une correspondance au niveau du jour de la semaine, au niveau du mois, au niveau du jour du mois, au niveau de l'heure et au niveau des minutes, alors il va exécuter la commande. Si jamais je mets une ligne dans laquelle on va avoir 2 5 1 1 1 par exemple, et puis là, je mets /usr/local/bin/script1 par exemple, voilà, script1.sh, il va exécuter la commande /usr/local/bin/script1.sh quand ? Tous les lundis, le 1 c'est lundi, 0 c'est dimanche, 1 c'est lundi, 2 c'est mardi, jusqu'à 7 dimanche à nouveau. Quand on sera au mois de janvier, on sera le premier janvier, et qui sera 5 heures et 2 minutes. Donc là, ça, ça va lancer la commande, je vais le marquer derrière histoire qu'on le voit pour que ce soit illustré, le script sera lancé tous les lundis 1er janvier à 5h02, voilà ce que veut dire cette première ligne-là. L'objectif de la crontab c'est de pouvoir préciser quand est-ce qu'on va exécuter régulièrement nos commandes. Pour aller un petit peu plus loin, et pour illustrer le piège qui vous attend, parce que tout le monde se fait avoir au début, si je mets 5****, et puis que je mets /usr/local/bin/script2.sh, quand est-ce que script2.sh va s'exécuter ? Alors je vous laisse 5 secondes pour que vous y réfléchissiez, et puis on va voir si vous avez eu raison ou pas. Si vous voulez un petit peu plus de temps, je vous conseille de mettre la vidéo en pause, mais la question que je vous pose, c'est donc quand est-ce que ce script2 va s'exécuter. Ben il va s'exécuter toutes les heures, et il va pas s'exécuter toutes les cinq minutes. Pourquoi est-ce qu'il va s'exécuter toutes les heures ? Eh bien tout simplement parce que ici, qu'est-ce que j'ai dit ? J'ai dit que les minutes devaient être à cinq quand il va s'exécuter, elles devaient être à *, donc c'est quelle que soit l'heure, quel que soit le jour du mois, quel que soit le mois de l'année, quel que soit le jour de la semaine. Et quand est-ce qu'on a les heures qui sont à cinq minutes ? Eh ben ça a lieu à minuit cinq, puis la fois d'après, ça a lieu à une heure cinq, puis la fois d'après ça a lieu à deux heures cinq, trois heures cinq, quatre heures cinq, etc. Cette commande-là, elle aura lieu toutes les heures à l'heure H plus cinq minutes. Donc faites attention, parce que c'est vraiment un piège très classique, on se fait quasiment tous avoir au début, cette ligne-là, le script n'est pas exécuté toutes les cinq minutes, il est exécuté toutes les heures à l'heure H plus cinq minutes. Alors du coup, si je veux exécuter un script toutes les cinq minutes, il va suffire que je marque toutes les cinq minutes ici, j'ai plusieurs façons de le faire. La façon la plus casse-pieds à faire, c'est de marquer 0,5,10,15,20, etc., je vais pas toutes les marquer, puis après, je mets ****, et puis le nom de mon script /usr/local/bin/script3.sh. Alors là, il va s'exécuter toutes les cinq minutes pour les vingt premières minutes. Il faudrait que j'aille jusqu'à 60, vous avez vu que c'est quand même un petit peu long à écrire. J'ai une autre alternative qui va être toutes les minutes, en fait ce ne sera pas toutes les minutes, ce sera par incréments de cinq minutes. Donc toutes les minutes par incréments de cinq minutes c'est toutes les cinq minutes, quelle que soit l'heure, quelle que soit le jour du mois, quel que soit le mois de l'année, quel que soit le jour de l'année, /usr/local/bin/script4.sh, ben le script4, lui, va bien s'exécuter toutes les cinq minutes, c'est comme ça qu'on ferait s'exécuter un script toutes les cinq minutes. Voilà un petit peu comment cette crontab elle va fonctionner, donc là, si jamais je fais Echap :w, donc j'enregistre, :q, lui , qu'est-ce qu'il va faire, il va vérifier si la syntaxe est correcte, et si la syntaxe est correcte, il l'installe dans le système. Et cette fois, si je rappelle ma commande crontab -l, il m'affiche la crontab que je viens de créer. Faites très attention, si vous voulez l'éditer, si vous faites un crontab -r, et le r se trouve à coté du e, qu'est-ce qui va se passer ? Le -r il ne fait pas rien, le r c'est comme remove, il a détruit la crontab. Donc faites très très attention quand vous le tapez, soyez prudent, si jamais vous appuyez entre deux touches, vous prenez le risque de tout effacer. Donc voilà pour la crontab des utilisateurs.

Linux : Les services système

Découvrez les services qui tournent en permanence sur votre système et adaptez-les en fonction de vos besoins. Abordez la gestion des logs, la synchronisation horaire, etc.

2h16 (22 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :25 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !