N'oubliez pas qu'il y a une différence entre le builtin de bash time
(qui devrait être appelé par défaut lorsque vous le faites time command
) et /usr/bin/time
(qui devrait vous obliger à l'appeler par son chemin complet).
L'intégré time
imprime toujours sur stderr, mais /usr/bin/time
vous permettra d'envoyer la sortie de l'heure à un fichier spécifique, afin de ne pas interférer avec le flux stderr de la commande exécutée. De plus, /usr/bin/time
le format de s est configurable sur la ligne de commande ou par la variable d'environnement TIME
, alors que le time
format intégré de bash n'est configuré que par la TIMEFORMAT
variable d'environnement.
$ time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
real 0m3.194s
user 0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
man bash
: "La variable TIMEFORMAT peut être définie sur une chaîne de format qui spécifie comment les informations de minutage doivent être affichées"help time
parce que je n'ai jeté qu'un coup d'œil dessus et j'ai pensé que c'était un argument de ligne de commande. Je mettrai à jour la réponse.time
est une commande intégrée dans la plupart des shells qui écrit les informations de temps d'exécution sur le tty.Vous pouvez également essayer quelque chose comme
start_time=`date +%s` <command-to-execute> end_time=`date +%s` echo execution time was `expr $end_time - $start_time` s.
Ou en
bash
:start_time=`date +%s` <command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
la source
time
utilise des millisecondes. Et si vous voulez chronométrer une poignée de commandes ensemble sans avoir à utiliser de variables et de calculs, vous pouvez utiliser des parenthèses:time ( command1 ; command2 ; command3 )
vous pouvez même les chronométrer individuellement avec un temps total, comme ceci:time ( time command1 ; time command2 ; time command3 )
Bien sûr, si vous voulez une vingtaine de commandes, vous pouvez mieux vaut utiliser la solution de cette réponse. Mais alors, vous devriez commencer à penser à mettre toutes vos commandes dans un script ...root@hostname:~# time [command]
Il fait également la distinction entre le temps réel utilisé et le temps système utilisé.
la source
time
écrit sur le tty, pas sur stderr. Ce qui, je suppose, aggrave les choses.Pour une mesure delta ligne par ligne, essayez gnonom .
la source
Ajout à la réponse de @ mob:
L'ajout
%N
dedate +%s
nous donne une précision nanoseconde:start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
la source
Si je démarre un processus de longue durée comme une copie ou un hachage et que je veux savoir plus tard combien de temps cela a pris, je fais juste ceci:
Ce qui entraînera la sortie suivante:
Certes, tel qu'implémenté ici, il n'est pas très précis et ne calcule pas le temps écoulé. Mais c'est très simple et parfois tout ce dont vous avez besoin.
la source
Dans zsh, vous pouvez utiliser
Dans bash ou zsh, vous pouvez utiliser
command time ...
Ceux-ci (par des mécanismes différents) forcent une commande externe à être utilisée.
la source
Juste
ps -o etime= -p "<your_process_pid>"
la source