No olvide que hay una diferencia entre el builtin de bash time
(que debería llamarse por defecto cuando lo hace time command
) y /usr/bin/time
(que debería requerir que lo llame por su ruta completa).
La función incorporada time
siempre se imprime en stderr, pero /usr/bin/time
le permitirá enviar la salida de tiempo a un archivo específico, para que no interfiera con el flujo stderr del comando ejecutado. Además, /usr/bin/time
el formato de 'se puede configurar en la línea de comandos o mediante la variable de entorno TIME
, mientras que el time
formato integrado de bash solo se configura mediante la TIMEFORMAT
variable de entorno.
$ 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 puede establecerse en una cadena de formato que especifica cómo se debe mostrar la información de tiempo"help time
porque solo lo miré y pensé que era un argumento de línea de comando. Actualizaré la respuesta.time
es un comando integrado en la mayoría de los shells que escribe información sobre el tiempo de ejecución en el tty.También puedes probar algo como
start_time=`date +%s` <command-to-execute> end_time=`date +%s` echo execution time was `expr $end_time - $start_time` s.
O en
bash
:start_time=`date +%s` <command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
fuente
time
usa milisegundos. Y si desea cronometrar un puñado de comandos juntos sin tener que usar variables y cálculos, puede usar paréntesis:time ( command1 ; command2 ; command3 )
incluso puede cronometrarlos individualmente junto con un tiempo total, así:time ( time command1 ; time command2 ; time command3 )
Por supuesto, si desea unos veinte comandos, podría Sería mejor usar la solución de esta respuesta. Pero luego, debería comenzar a pensar en poner todos sus comandos en un script ...root@hostname:~# time [command]
También distingue entre el tiempo real utilizado y el tiempo del sistema utilizado.
fuente
time
escribe en tty, no stderr. Lo que supongo que empeora las cosas.Para una medición delta línea por línea, pruebe gnonom .
fuente
Agregando a la respuesta de @ mob:
Agregar
%N
adate +%s
nos da una precisión de nanosegundos:start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
fuente
Si estoy iniciando un proceso de larga duración como una copia o un hash y quiero saber más tarde cuánto tiempo tomó, simplemente hago esto:
Lo que dará como resultado la siguiente salida:
Por supuesto, tal como se implementa aquí, no es muy preciso y no calcula el tiempo transcurrido. Pero es muy simple y, a veces, todo lo que necesitas.
fuente
En zsh puedes usar
En bash o zsh puedes usar
command time ...
Estos (por diferentes mecanismos) obligan a utilizar un comando externo.
fuente
Sólo
ps -o etime= -p "<your_process_pid>"
fuente