Guide avancé d'écriture des scripts Bash: | ||
---|---|---|
Précédent | Chapitre 12. Filtres externes, programmes et commandes | Suivant |
Exécutée telle quelle, date affiche la date et l'heure sur stdout. Cette commande devient intéressante grâce à ses options de présentation et d'analyse.
Exemple 12-7. Utiliser date
#!/bin/bash # S'exercer avec la commande 'date' echo "Le nombre de jours écoulés depuis le début de l'année `date +%j`." # On a besoin d'un '+' au début pour demander un formattage correct. # %j donne le jour de l'année. echo "Le nombre de secondes écoulées depuis 01/01/1970 est `date +%s`." # %s affiche le nombre de secondes écoulées depuis le début de l'époque UNIX, #+ mais quelle est son utilité? prefixe=temp suffixe=`eval date +%s` # L'option "+%s" de 'date' est spécifique à GNU. nomfichier=$prefixe.$suffixe echo $nomfichier # C'est intéressant pour créer des noms de fichiers temporaires "uniques", #+ voire mieux que d'utiliser $$. # Voir la page de manuel de 'date' pour plus d'informations sur ses #+ possibilités. # de présentation. exit 0 |
L'option -u renvoie la date au format UTC (Temps Universel Coordonné).
bash$ date Fri Mar 29 21:07:39 MST 2002 bash$ date -u Sat Mar 30 04:07:42 UTC 2002 |
Affiche la date dans le fuseau horaire spécifié.
bash$ zdump EST EST Mar Sep 18 22:09:22 2001 EST |
Renvoie des statistiques très détaillées sur le temps d'exécution d'une commande.
time ls -l / va donner quelque chose d'équivalent à ceci :
0.00user 0.01system 0:00.05elapsed 16%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (149major+27minor)pagefaults 0swaps |
Voir aussi la commande similaire times de la section précédente.
![]() | A partir de la version 2.0 de Bash, time est devenu un mot réservé du shell, avec un comportement très légèrement différent dans un tube. |
Utilitaire de mise à jour de la date d'accès/modification d'un fichier à partir de la date système courante ou d'une date spécifiée mais aussi utile pour créer un nouveau fichier. La commande touch zzz créera un nouveau fichier zzz de taille nulle, en admettant bien entendu que zzz n'existait pas auparavant. Marquer de cette façon des fichiers vides est utile pour stocker la date, par exemple pour garder trace des modifications de date sur un projet.
![]() | La commande touch est équivalent à : >> nouveaufichier ou >> nouveaufichier (pour des fichiers ordinaires). |
La commande de contrôle de job at exécute une liste de commandes données à l'heure souhaitée. A première vue, at ressemble à crond. Cependant, at sert surtout à exécuter d'un coup une liste de commandes.
at 2pm January 15 demande une liste de commandes à exécuter à cette heure précise. Ces commandes devraient être compatibles à un script shell car, en fin de compte, l'utilisateur écrit dans un script shell exécutable une ligne à la fois. L'entrée se termine avec un Ctrl-D.
En utilisant le paramètre -f ou la redirection d'entrée (<), at lit une liste de commandes depuis un fichier. Ce fichier est un script shell exécutable, bien qu'il devrait être non-interactif. Il est particulièrement malin d'inclure la commande run-parts dans le fichier pour exécuter un différent jeu de scripts.
bash$ at 2:30 am Friday < at-jobs.liste job 2 at 2000-10-27 02:30 |
La commande de contrôle de job batch est similaire à at, mais elle exécute une liste de commande quand la charge système tombe en dessous de .8. Comme at, elle peut lire les commandes depuis un fichier avec le paramètre -f.
Affiche un calendrier mensuel correctement formatté vers stdout. cal affichera l'année en cours ou bien un large intervalle d'années passées et futures.
C'est l'équivalent shell d'une boucle d'attente. Elle attend durant le nombre spécifié de secondes, ne faisant rien. Elle peut être utile pour un timing ou dans les processus tournant en tâche de fond, en attente d'un évenement spécifique aussi souvent (sondage), tel que dans Exemple 30-6.
sleep 3 # Attend 3 secondes. |
![]() | La commande sleep se base par défaut sur les secondes, mais des minutes, des heures ou des jours peuvent aussi être spécifiés.
|
Microsleep (le << u >> peut être lu de la même manière que la lettre Grecque << mu >>, ou micro). Elle fonctionne de manière identique à sleep, décrit juste au dessus, sauf qu'elle << attend >> à partir de délai en micro-secondes. On peut l'utiliser pour des timing très fins ou pour interroger un processus en cours à des intervalles très fréquents.
usleep 30 # Attend 30 micro-secondes. |
Cette commande fait partie du paquetage Red Hat initscripts / rc-scripts.
![]() | La commande usleep ne permet pas des timing particulièrement précis et n'est donc pas adaptée pour des boucles aux timings critiques. |
La commande hwclock accède à, ou ajuste l'horloge de la machine. Quelques options requièrent les privilèges du super-utilisateur (root). Le fichier de démarrage /etc/rc.d/rc.sysinit utilise hwclock pour ajuster l'heure système depuis l'horloge machine durant le démarrage.
La commande clock est un synonyme de hwclock.
Précédent | Sommaire | Suivant |
Commandes complexes | Niveau supérieur | Commandes d'analyse de texte |