Suivre le temps qu'une commande prend sous UNIX / LINUX?

118

Sous UNIX / LINUX, existe-t-il un moyen simple de suivre le temps qu'une commande prend?

OneChillDude
la source

Réponses:

165

Oui, utilisez time <command>, comme

time ls

Consultez man timepour plus d'options. Lien .

squiguy
la source
4
Et, la signification des temps réel / utilisateur / système est bien couverte ici
prideout
Cette réponse est inexacte pour les utilisateurs de bash sous Linux. La page de manuel documente la commande time de Gnu, mais time est un élément intégré de bash, qui ne contient pas toutes les options documentées.
Ben Crowell
7

Utilisation

/usr/bin/time 

au lieu de cela le temps intégré dans le bash: il est plus configurable AFAIK.

e.g. /usr/bin/time --format=' \n---- \nelapsed time is %e'ls
Paolinux
la source
Pour autant que je sache, c'est par défaut. C'était le cas sur les systèmes CentOS 6, CentOS 7 et Debian 8 que j'ai vérifiés: user@host:~$ which time /usr/bin/time semble être la version 1.7 de GNU.
Toby
4
@Toby: Même si "qui" dit que c'est / usr / bin / time, dans bash, la fonction intégrée remplace cela. Si je le fais time -f "\t%E real" lsen bash, j'obtiens une erreur, mais cela fonctionne si je le fais /usr/bin/time -f "\t%E real" ls.
Ben Crowell
1
Vous avez raison. C'est très intéressant et instructif. Merci!
Toby
1
N'utilisez pas which. Utilisation type -a:$ which time /usr/bin/time $ type -a time time is a shell keyword time is /usr/bin/time
Daniel-Dane
Notez que l'utilisation /usr/bin/timevous empêche d'utiliser les alias bash. Le bash intégré timeest nécessaire pour cela, sinon vous obtiendrez l'erreur cannot run my_alias: No such file or directory.
Jamie S
6

Voici à quoi sleepressemble une seconde, chronométrée avec time:

$ time sleep 1

real    0m1.001s
user    0m0.000s
sys 0m0.000s
Guillaume Chevalier
la source