Est-il possible d'imprimer le temps d'exécution d'une commande shell avec la combinaison suivante ?
root@hostname:~# "command to execute" && echo "execution time"
Est-il possible d'imprimer le temps d'exécution d'une commande shell avec la combinaison suivante ?
root@hostname:~# "command to execute" && echo "execution time"
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 dans bash
:
start_time=`date +%s`
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
En accord avec Maaza, cette flexibilité m'a permis de mesurer le temps de tout un ensemble de commandes.
Est-il possible d'appliquer les aspects linux autour de n'importe quelle commande linux pour calculer l'exécution
L'un des inconvénients de cette approche est qu'elle mesure en secondes, alors que 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, il est préférable d'utiliser la solution de cette réponse. Mais alors, vous devriez commencer à penser à mettre toutes vos commandes dans un script...
N'oubliez pas qu'il y a une différence entre la fonction intégrée de bash time
(qui devrait être appelé par défaut quand vous faites time command
) et /usr/bin/time
(ce qui devrait vous obliger à l'appeler par son chemin complet).
La fonction intégrée time
imprime toujours sur stderr, mais /usr/bin/time
vous permettra d'envoyer la sortie de time dans un fichier spécifique, afin de ne pas interférer avec le flux stderr de la commande exécutée. Aussi, /usr/bin/time
Le format de la commande est configurable en ligne de commande. o par la variable d'environnement TIME
alors que la fonction intégrée de bash time
Le format est sólo configuré par le TIMEFORMAT
variable d'environnement.
$ time factor 1234567889234567891 # builtin
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 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
De man bash
: "La variable TIMEFORMAT peut être définie sur une chaîne de format qui spécifie la manière dont les informations de synchronisation doivent être affichées".
Oups - Je pensée il y avait un moyen de le formater, mais je l'ai raté en help time
parce que j'ai seulement jeté un coup d'œil dessus et j'ai pensé que c'était un argument de ligne de commande. Je vais mettre à jour la réponse.
C'est certainement la réponse de base - mais il y a quelques complications si vous voulez voir la sortie d'erreur de la commande et envoyer les informations de synchronisation à la sortie standard comme le fait la question. La commande de temps écrit sur stderr. Ce que vous suggérez est probablement assez précis - d'où mon +1.
Pour une mesure du delta ligne par ligne, essayez gnome .
Il s'agit d'un utilitaire de ligne de commande, un peu comme ts de moreutils, pour ajouter des informations d'horodatage à la sortie standard d'une autre commande. Utile pour les processus qui s'exécutent depuis longtemps et pour lesquels vous souhaitez avoir un historique de ce qui prend tant de temps.
Si vous envoyez quoi que ce soit à gnomon, un horodatage sera ajouté à chaque ligne, indiquant combien de temps cette ligne était la dernière dans le tampon, c'est-à-dire combien de temps il a fallu pour que la ligne suivante apparaisse. Par défaut, gnomon affiche les secondes écoulées entre chaque ligne, mais cela est configurable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.