Automatiser les Tâches d’administration EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉ

Automatiser les Tâches d’administration EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE  at : exécuter une commande plus tard  Exécuter une commande à une heure précise La commande s'utilise en deux temps. 1. Vous indiquez à quel moment (quelle heure, quel jour) vous désirez que la commande soit exécutée. 2. Vous tapez ensuite la commande que vous voulez voir exécutée à l'heure que vous venez d'indiquer. Il faut donc d'abord indiquer à quelle heure vous voulez exécuter votre commande, sous la formeHH:MM :  $ at 14:17 L'exécution des commandes est demandée à 14 h 17 aujourd'hui. Si vous tapez cela dans votre console, vous devriez voir ceci s'afficher :  $ at 14:17  warning: commands will be executed using /bin/sh  at> at comprend que vous voulez exécuter des commandes à 14 h 17 et vous demande lesquelles. C'est pour cela qu'un prompt est affiché : on vous demande de taper les commandes que vous voulez exécuter à cette heure-là. Pour cet exemple, nous allons demander de créer un fichier à 14 h 17 :  $ at 14:17  warning: commands will be executed using /bin/sh  at> touch fichier.txt  at> <EOT>  job 5 at Mon Nov 10 14:17:00 2010 Après avoir écrit la commande touch, at affiche à nouveau un prompt et vous demande une autre commande. Vous pouvez indiquer une autre commande { exécuter { la même heure… ou bien arrêter l{. Dans ce cas, tapez Ctrl + D (comme si vous cherchiez à sortir d'un terminal). Le symbole <EOT> devrait alors s'afficher, et at s'arrêtera. at affiche ensuite le numéro associé à cette tâche (à ce « job », comme il dit) et l'heure à laquelle il sera exécuté. Attendez 14 h 17, et vous verrez que le fichier sera créé.  Et si je veux exécuter la commande demain à 14 h 17 et non pas aujourd'hui ?  $ at 14:17 tomorrow tomorrow signifie « demain ». Et si je veux exécuter la commande le 15 novembre à 14 h 17 ?  $ at 14:17 11/15/16 La date est au format américain, les numéros du jour et du mois sont donc inversés : 11/15/10. 11 correspond au mois (novembre) et 15 au numéro du jour !  Exécuter une commande après un certain délai Il est possible d'exécuter une commande dans 5 minutes, 2 heures ou 3 jours sans avoir à écrire la date. Par exemple, pour exécuter la commande dans 5 minutes :  $ at now +5 minutes … ce qui signifie « Dans maintenant (now) + 5 minutes ». Les mots-clés utilisables sont les suivants : – minutes ; – hours (heures) ; – days (jours) ; – weeks (semaines) ; – months (mois) ; – years (années). – midnight — Signifie minuit, soit 12:00AM. – noon — Signifie midi, soit12:00 PM. – teatime — Signifie 16:00 heures, soit 4:00PM. Un autre exemple : $ at now +2 weeks … exécutera les commandes dans deux semaines.  atq et atrm : lister et supprimer les jobs en attente Chaque fois qu'une commande est « enregistrée », at nous indique un numéro de job ainsi que l'heure à laquelle il sera exécuté. Il est possible d'avoir la liste des jobs en attente avec la commande atq :  $ atq  13 Mon Nov 10 14:44:00 2010 a saad  12 Mon Nov 10 14:42:00 2010 a saad Si vous souhaitez supprimer le job n° 13 (je ne sais pas, parce que ça porte malheur par exemple), utilisez atrm :  $ atrm 13  La commande batch La commande batch fonctionne comme at mais on ne précise pas d'heure ni de date. La travail est placé dans une file d'attente (FIFO) et est exécutée quand c'est son tour.  batch < fic_commandes  sleep : faire une pause Vous pouvez enchaîner plusieurs commandes à la suite en les séparant par des points-virgules comme ceci :  $ touch fichier.txt; rm fichier.txt touch est d'abord exécuté, puis une fois qu'il a fini ce sera le tour de rm (qui supprimera le fichier que nous venons de créer). Parfois, enchaîner les commandes comme ceci est bien pratique… mais on a besoin de faire une pause entre les deux. C'est là qu'intervient sleep : cette commande permet de faire une pause.  $ touch fichier.txt; sleep 10; rm fichier.txt Cette fois, il va se passer les choses suivantes : – fichier.txt est créé ; – sleep fait une pause de 10 secondes ; – rm supprime ensuite le fichier. Par défaut, la pause est exprimée en secondes. Il est aussi possible d'utiliser d'autres symboles pour changer l'unité : – m : minutes ; – h : heures ; – d : jours. Pour faire une pause d'une minute :  $ touch fichier.txt; sleep 1m; rm fichier.txt Vous pouvez aussi remplacer les points-virgules par des &&, comme ceci :  touch fichier.txt && sleep 10 && rm fichier.txt Dans ce cas, les instructions ne s'enchaîneront que si elles se sont correctement exécutées. Par exemple, si touch renvoie une erreur pour une raison ou une autre, alors les commandes qui suivent (sleep, rm) ne seront pas exécutées.  crontab : exécuter une commande régulièrement Contrairement à at qui n'exécutera le programme qu'une seule fois, crontab permet de faire en sorte que l'exécution soit répétée : toutes les heures, toutes les minutes, tous les jours, tous les trois jours, etc.  La « crontab », qu'est-ce que c'est ? crontab est en fait une commande qui permet de lire et de modifier un fichier appelé la « crontab ». Ce fichier contient la liste des programmes que vous souhaitez exécuter régulièrement, et à quelle heure vous souhaitez qu'ils soient exécutés. crontab permet donc de changer la liste des programmes régulièrement exécutés. C'est toutefois le programme cron qui se charge d'exécuter ces programmes aux heures demandées. Ne confondez donc pas crontab et cron : le premier permet de modifier la liste des programmes à exécuter, le second les exécute. Comment utilise-t-on crontab ? Il y a trois paramètres différents à connaître, pas plus :  -e : modifier la crontab ;  -l : afficher la crontab actuelle ;  -r : supprimer votre crontab. Attention, la suppression est immédiate et sans confirmation ! Commençons par afficher la crontab actuelle :  $ crontab -l  no crontab for saad Normalement, vous n'avez pas encore créé de crontab. Vous noterez qu'il y a une crontab par utilisateur. Là j'édite la crontab de saad car je suis loggé avec l'utilisateur saad, mais root a aussi sa propre crontab. La preuve :  $ sudo crontab -l  no crontab for root Bien, intéressons-nous à la modification de la crontab. Tapez :  $ crontab -e Si vous avez bien configuré votre .bashrc tout à l'heure (et que vous avez relancé votre console), cela devrait ouvrir le programme Nano que vous connaissez. Si par hasard vous n'avez pas fait quelque chose correctement, c'est le programme « vi » qui se lancera. Comme vous ne le connaissez pas encore, tapez :q puis Entrée pour sortir. Vérifiez à nouveau votre configuration du .bashrc et n'oubliez pas de fermer puis de rouvrir votre console.  Modifier la crontab Les champs Le fichier ne contient qu'une seule ligne : # m h dom mon dow command Comme cette ligne est précédée d'un #, il s'agit d'un commentaire (qui sera donc ignoré). Cette ligne vous donne quelques indications sur la syntaxe du fichier :  m : minutes (0 - 59) ;  h : heures (0 - 23) ;  dom (day of month) : jour du mois (1 - 31) ;  mon (month) : mois (1 - 12) ;  dow (day of week) : jour de la semaine (0-6,0 étant le dimanche) ;  command : c'est la commande à exécuter. En clair, vous devez d'abord indiquer à quel moment vous voulez que la commande soit exécutée, puis ensuite écrire à la fin la commande à exécuter. C'est un peu comme un tableau. Chaque champ est séparé par un espace. Chaque « X » sur le schéma peut être remplacé soit par un nombre, soit par une étoile qui signifie « tous les nombres sont valables ». Imaginons que je veuille exécuter une commande tous les jours à 15 h 47. Je vais écrire ceci : 47 15 * * * touch /home/saad/fichier.txt Seules les deux premières valeurs sont précisées : les minutes et les heures. Chaque fois qu'il est 15 h 47, la commande indiquée à la fin sera exécutée. J'ai écrit le chemin du fichier en entier, car vous ne pouvez pas être sûrs que le crons'exécutera dans le répertoire que vous voulez. Il est donc toujours préférable d'écrire le chemin du fichier en absolu comme je l'ai fait ici : /home/saad/fichier.txt. Au fait, pourquoi passer par la commande crontab -e pour modifier un fichier ? Il ne serait pas plus simple uploads/Industriel/ programmation-periodique.pdf

  • 29
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager