Chapitre 5
Système d’Exploitation
UNIX
Programmation Shell:
Automatisation en Shell
[Link]
Le Service « CRON »
Cron est un service ou démon (crond) permettant d'exécuter des tâches à
des intervalles de temps réguliers. Il est présent sur tout système de type Unix
et distributions GNU/linux.
La configuration de cron se fait via des fichiers au format crontab, il existe
un fichier par utilisateur.
L'utilisateur pourra ajouter une action, en éditant son fichier crontab via la
commande crontab -e.
crontab
crontab -l : permet de lister toutes les actions crontab de votre utilisateur .
crontab -u user -l : permet à l'administrateur de lister toutes les
actions crontab de l'utilisateur user.
crontab -r : permet de supprimer votre fichier crontab .
crontab -e : permet d'éditer votre fichier crontab. Cela ouvrira l'éditeur de texte
standard vi.
La commande crontab
Syntaxe des fichiers au format crontab:
Il existe 7 champs paramétrables par un nombre, une chaîne de caractères,
séparés par un espace :
minute(1) heure(2) jour(mois)(3) mois(4) jour(semaine)(5) utilisateur(6) commande(7)
(1) valeur comprise entre 0 et 59.
(2) valeur comprise entre 0 et 23.
(3) valeur comprise entre 1 et 31.
(4) valeur comprise entre 1 et 12.
(5) valeur comprise entre 0 et 7 (Dimanche étant le 0 ou le 7) ou alors les
abréviations correspondant aux jours de la semaine en Anglais: sun, mon, tue,
wed, thur, fri, sat.
(6) uniquement pour les fichiers crontab du système dans /etc/cron.d/ .
(7) commande à effectuer.
La commande crontab
Syntaxe des fichiers au format crontab:
Il existe aussi des caractères spéciaux :
* : s'il est utilisé dans l'un des 5 premiers champs, indique que la
commande doit être effectuée tout le temps ;
/ : permet de spécifier une répétition ;
- : permet de définir une plage ;
, : permet de définir plusieurs valeurs.
Exemples:
Vider un répertoire tmp dans notre home toutes les heures:
Lancer le script [Link] régulièrement le mercredi et le vendredi à
4h00 du matin
La commande crontab
Exemple:
La commande at
La commande at prévoit l'exécution d'une commande à un moment
ultérieur.
Elle prend l'horaire et la date prévus en paramètres sur sa ligne de
commande, et la commande à exécuter sur son entrée standard.
La commande sera exécutée comme si elle avait été saisie dans un
interpréteur de commandes.
at conserve d'ailleurs l'environnement courant afin de pouvoir travailler
exactement dans les mêmes conditions que celles de la planification.
L'horaire est indiqué en suivant les conventions
habituelles : 16:12 représente 16 h 12. La date peut être précisée au
format [Link] (27.07.15 représentant ainsi 27 juillet 2015) ou AAAA-
MM-JJ.
En son absence, la commande sera exécutée dès que l'horloge atteindra
l'heure signalée (le jour même ou le lendemain). On peut encore écrire
explicitement today (aujourd'hui) ou tomorrow (demain).
La commande at
Et si on veut exécuter la commande demain à 14 h 17 et non pas aujourd'hui:
$at 14:17 tomorrow
Et si on veut exécuter la commande le 15 novembre à 14 h 17 ?
$at 14:17 11/15/20
La date est au format américain, les numéros du jour et du mois sont donc
inversés: 11/15/20. 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 +5minutes
La commande at
Les mots-clés utilisables sont les suivants:
• minutes
• hours(heures)
• days(jours)
• weeks(semaines)
• months(mois)
• years(années)
Exemple: at now +2 weeks
Exécutera les commandes dans deux semaines.
La commande at
Exemple:
Ctrl + D
La commande at
Visualisation et suppression
atq et atrm: lister et supprimer les jobs en attente
Il est possible d'avoir la liste des jobs en attente avec la commande atq.
Celui-ci indique un numéro de job ainsi que l'heure exécuté.
Si vous souhaitez supprimer un job, utilisez atrm
Exemple: atrm 1
Les Alias
Sur Linux, les alias sont des raccourcis de commandes jugées trop longues
par l’utilisateur.
En effet, le terminal est très pratique mais les commandes sont parfois
lourdes et il devient facile de se tromper.
Un alias permet également de gagner du temps en créant une commande
courte pour une séquence que l’on tape fréquemment.
Méthode:
Pour créer un alias en éditant le fichier .bashrc, vous devez avoir les droits
nécessaires.
Tout à la fin de votre fichier vous pouvez inscrire vos alias.
Vous devez les écrire de la manière suivante :
alias nom_de_votre_alias='commande_a_executer'
Exemple : alias installe='aptitude install'
Les Alias
Exemple:
Exercices
Exercice 1:
Mettre en place un script qui, chaque heure, ajoute la date, l'heure et la liste des
processus en cours de fonctionnement dans un fichier nommé "[Link]".
Exercice 2:
Exécuter le script précédent :
Le Vendredi à 17h00
La semaine prochaine au même moment
Deux jours plus tard
Exercice 3:
Ecrire un script qui permet l’exécution de la commande /bin/pwd >
/tmp/[Link] toutes les minutes.
Exercice 4:
Programmer deux fois par jour dans une crontab système, à 7h45 et 13h45, la
suppression dans /tmp des fichiers dont la date de modification est supérieure à
un jour