L'impression de temps d'exécution d'une commande shell
Est possible d'imprimer le temps d'exécution d'une commande shell avec la combinaison suivante?
root@hostname:~# "command to execute" && echo "execution time"
Vous devez vous connecter pour publier un commentaire.
N'oubliez pas qu'il existe une différence entre bash est builtin
time
(qui doit être appelé par défaut lorsque vous netime command
) et/usr/bin/time
(ce qui devrait vous obliger à l'appeler par son chemin d'accès complet).La builtin
time
toujours imprime sur la sortie stderr, mais/usr/bin/time
vous permettra d'envoyer la sortie vers un fichier spécifique, afin de ne pas interférer avec la commande en cours d'exécution du flux stderr. Aussi,/usr/bin/time
's format est configurable sur la ligne de commande ou par la variable d'environnementTIME
, alors que bash est builtintime
format est seulement configuré par l'TIMEFORMAT
variable d'environnement.man bash
: "La TIMEFORMAT variable peut être définie à un format de chaîne de caractères qui spécifie la façon dont le calendrier doit être affichée"help time
parce que j'ai seulement jeté un coup d'oeil sur elle et j'ai pensé que c'était un argument de ligne de commande. Je vais mettre à jour la réponse.time
est une commande intégrée dans la plupart des shells qui écrit de temps d'exécution d'information à l'ats.Vous pouvez également essayer quelque chose comme
Ou dans
bash
:time
utilise milisecondes. Et si vous souhaitez qu'une poignée de commandes sans avoir à utiliser des variables et des calculs, vous pouvez utiliser des parenthèses:time ( command1 ; command2 ; command3 )
vous pouvez même temps individuellement avec un temps total, comme suit:time ( time command1 ; time command2 ; time command3 )
bien sûr, si vous voulez une vingtaine de commandes, peut-être mieux de se servir de cette réponse de la solution. Mais alors, vous devriez commencer à penser à mettre vos commandes dans un script...Il distingue entre le temps réel utilisé et l'heure du système utilisé.
time
écrit à l'ats, pas stderr. Qui, j'imagine, rend les choses pires.Pour une ligne-par-ligne delta de mesure, essayez gnonom.
L'ajout de @foule réponse:
Ajoutant
%N
àdate +%s
nous donne l'ordre de la nanoseconde précision:Si je commence un long processus en cours d'exécution comme une copie ou un hachage et je veux savoir la suite comment ça a été long, je viens de le faire:
Qui aura pour conséquence la sortie suivante:
Accordé, tel que mis en œuvre ici, il n'est pas très précis et ne parvient pas à calculer le temps écoulé. Mais c'est de la saleté simple et parfois, tout ce dont vous avez besoin.
Dans zsh vous pouvez utiliser
En bash ou zsh, vous pouvez utiliser
Ces (par des mécanismes différents) force une commande externe pour être utilisé.
Juste
ps -o etime= -p "<your_process_pid>"