¿Imprimir el tiempo de ejecución del Script desde el Script?

¿Imprimir el tiempo de ejecución del Script desde el Script?

Estoy buscando archivos PDF en todos los directorios excepto aquellos .texpadtmppor código originalmente basado enesta discusión.

function findpdfs() {
find . -iname '*.pdf' -not -path "*.texpadtmp*" | while read filename
do
  echo -e "\033[34;1m// === PDF Document:\033[33;1m $filename\033[0m"
  pdftotext -enc Latin1 "$filename" - | grep --color=always -i $1
  time         # TODO problem here!
done
}

donde, en la última línea, intento imprimir el tiempo de ejecución del script para cada archivo sin éxito.

¿Cómo se puede imprimir la hora correctamente?

Mi próximo objetivo es tener todos los tiempos de ejecución y presentarlos como porcentajes en el resultado como números enteros para poder aproximar a dónde van la mayoría de los recursos de tiempo.

Respuesta1

Método n.º 1: utilizar la hora de inicio/finalización

Normalmente lo verás hecho donde lo haces:

begin=$(date +%s) 
... do something ...
end=$(date +%s)

Y luego resta el $begintiempo del $endtiempo para obtener el número de segundos que han transcurrido.

tottime=$(expr $end - $begin)

Método #2 - Usar los comandos de tiempo

El otro método sería utilizar el timecomando integrado en Bash o time program that's included with most Linux/Unix systems here,/bin/time`.

Puedes comprobarlo así:

$ type -a time
time is a shell keyword
time is /usr/bin/time
time is /bin/time

Lo usas así:

incorporado
$ time sleep 5

real    0m5.004s
user    0m0.001s
sys 0m0.001s
ejecutable independiente
$ /bin/time sleep 5
0.00user 0.00system 0:05.00elapsed 0%CPU (0avgtext+0avgdata 628maxresident)k
0inputs+0outputs (0major+191minor)pagefaults 0swaps

Proporcionan diferentes resultados, pero puede utilizar el que mejor se adapte a sus necesidades. Ambos imprimirán el tiempo transcurrido que tarda en ejecutarse un comando:

$ time <cmd>

Entonces podrías anteponer tu pdf2textcomando.

información relacionada