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