En informática , time
es un comando en Unix y sistemas operativos similares a Unix . Se utiliza para determinar la duración de la ejecución de un comando en particular .
time(1)
puede existir como un programa independiente (como en tiempo GNU ) o como un shell incorporado en la mayoría de los casos (por ejemplo, en sh , bash , tcsh o zsh ).
El tiempo total de CPU es la combinación de la cantidad de tiempo que la CPU o las CPU dedicaron a realizar alguna acción para un programa y la cantidad de tiempo que dedicaron a realizar llamadas al sistema para el kernel en nombre del programa. Cuando un programa recorre una matriz, está acumulando tiempo de CPU del usuario. Por el contrario, cuando un programa ejecuta una llamada al sistema como exec
o fork
, está acumulando tiempo de CPU del sistema.
El término "tiempo real" en este contexto se refiere al tiempo transcurrido en un reloj de pared , como si se usara un cronómetro. El tiempo total de CPU (tiempo de usuario + tiempo de sistema) puede ser mayor o menor que ese valor. Debido a que un programa puede pasar algún tiempo esperando y no ejecutándose en absoluto (ya sea en modo de usuario o en modo de sistema), el tiempo real puede ser mayor que el tiempo total de la CPU. Debido a que un programa puede bifurcar elementos secundarios cuyos tiempos de CPU (tanto de usuario como de sistema) se suman a los valores informados por el time
comando, pero en un sistema multinúcleo estas tareas se ejecutan en paralelo, el tiempo total de CPU puede ser mayor que el tiempo real.
Para usar el comando, simplemente preceda cualquier comando con la palabra time
, como por ejemplo:
$ tiempo ls
Cuando se complete el comando, time
informará cuánto tiempo llevó ejecutar el ls
comando en términos de tiempo de CPU del usuario , tiempo de CPU del sistema y tiempo real. El formato de salida varía entre las diferentes versiones del comando y algunas brindan estadísticas adicionales, como en este ejemplo:
$ time host wikipedia.org wikipedia.org tiene dirección 103.102.166.224 El correo de wikipedia.org es manejado por 50 mx2001.wikimedia.org. El correo de wikipedia.org es manejado por 10 mx1001.wikimedia.org. host wikipedia.org 0.04s usuario 0.02s sistema 7% CPU 0.780 total $
time (ya sea un programa independiente o cuando Bash Shell se ejecuta en modo POSIX Y time se invoca como ) informa a la salida de error estándar.time -p
Los scripts portátiles deben utilizar time -p
el modo, que utiliza un formato de salida diferente, pero que es coherente con varias implementaciones:
$ tiempo -p sha256sum /bin/ls 12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls real 0,00 usuario 0,00 sys 0,00 $
Las versiones actuales de la hora GNU informan más que solo una hora de forma predeterminada:
$ /usr/bin/time sha256sum /bin/ls 12477deb0e25209768cbd79328f943a7ea8533ece70256cdea96fae0ae34d1cc /bin/ls 0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 21 56maxresident)k 0entradas+0salidas (0mayor+96menor)fallos de página 0intercambios $
El formato de la salida para el tiempo GNU se puede ajustar usando TIME
una variable de entorno y puede incluir información distinta al tiempo de ejecución (es decir, uso de memoria). Este comportamiento no está disponible en tiempos generales compatibles con POSIX ni cuando se ejecuta como time -p
.
Generalmente se puede acceder a la documentación de esta época mediante .man 1 time
Según el código fuente de la implementación GNU de time
, la mayor parte de la información mostrada por time
se deriva de la wait3
llamada al sistema. En los sistemas que no tienen una wait3
llamada que devuelva información de estado, times
se utiliza la llamada al sistema.
En un popular shell de Unix , Bash , time
es una palabra clave especial que se puede colocar antes de una canalización (o comando único), que mide el tiempo de toda la canalización, no solo de un (primer) comando singular, y usa un formato predeterminado diferente, y coloca línea vacía antes de los tiempos de informe:
$ tiempo secuencial 10000000 | baño -l 10000000 real 0m0.078s usuario 0m0.116s sistema 0m0.029s $
El tiempo reportado es un tiempo utilizado por ambos seq
y wc -l
sumado. El formato de la salida se puede ajustar usando TIMEFORMAT
variables.
El tiempo no es una palabra clave incorporada, sino especial, y no puede tratarse como una función o comando. También ignora las redirecciones de canalización (incluso cuando se ejecuta como , a menos que todo Bash se ejecute en "modo POSIX").time -p
Se puede acceder a la documentación de este momento usando , o dentro de bash usando .man 1 bash
help time