Attendre
La fonction sleep
sert à attendre.
Par défaut, elle prend en argument le nombre de seconde à attendre,
mais on peut utiliser un suffixe pour préciser l’unité
(s
pour les secondes,
m
pour des minutes,
h
pour des heures,
d
pour des jours).
Timeout
Pour lancer une tâche en lui accordant un temps maximum,
il faut utiliser la fonction timeout
.
Mesurer le temps d’exécution d’une commande
Le plus simple est de faire précéder la commande
du mot clé time
de bash
. Par exemple :
$ time sleep 10
real 0m10.002s
user 0m0.000s
sys 0m0.002s
On peut configurer l’affichage avec la variable TIMEFORMAT
. Par exemple :
$ (TIMEFORMAT="===== Time: real=%3lR user=%3lU sys=%3lS" ; time sleep 5)
===== Time: real=0m5.002s user=0m0.000s sys=0m0.002s
mais :
Récupérer la sortie de time dans une variable
Le résultat de time
est émis sur stderr
.
Si la commande que l’on veut mesurer
n'écrit pas sur la sortie standard, on peut faire :
var=$(time cmd 2>&1 > cmd.log)
C’est plus compliqué si on souhaite récupérer la sortie d’erreur de la commande dans un fichier, et le temps dans une variable. Une solution est :
var=$( { time cmd > cmd.log 2> cmd.err ; } 2>&1 )
Attention aux accolades et au point virgule.
Pour des informations plus détaillées, voir BashFAQ-032.
Durée entre deux instants
Il est parfois plus pratique de calculer le temps écoulé entre deux mesures :
t0=$(date +%s)
...
d=$(($(date +%s) - $t0))
echo "$(($d / 3600 ))h$((($d % 3600) / 60))m$(($d % 60))s"
Date ou durée sur la ligne de commande
L’option -d
de date
permet de donner une chaîne qui décrit une date
plutôt que d’utiliser la date courante. Le format d’entrée est extrêmement riche
(voir la [doc http://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html#Date-input-formats]).
Ici, on utilise @
pour entrée un //timestamp// (durée en secondes).
$ date -u -d @1462958438
mercredi 11 mai 2016, 09:20:38 (UTC+0000)
$ date -u -d @1462978153
mercredi 11 mai 2016, 14:49:13 (UTC+0000)
$ date -u -d @$((1462978153 - 1462958438)) +"%T"
05:28:35
Voir aussi :
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit