Probablemente sepa la hora de inicio de un comando/proceso y cuánto tiempo se ejecuta un proceso en sistemas Linux y similares a Unix. Pero, ¿cómo sabe cuándo finalizó el comando o proceso y/o cuál es el tiempo total que tardó el comando/proceso en completarse? Bueno, ¡es fácil! En sistemas similares a Unix, hay una utilidad llamada 'GNU time' que está diseñado específicamente para este propósito. Usando la utilidad Time, podemos medir fácilmente el tiempo total de ejecución de un comando o programa en los sistemas operativos Linux. Lo bueno es que el comando 'tiempo' viene preinstalado en la mayoría de las distribuciones de Linux, por lo que no tiene que molestarse con la instalación.
Encuentra el tiempo de ejecución de un comando o proceso en Linux
Para medir el tiempo de ejecución de un comando/programa, simplemente ejecútelo.
$ /usr/bin/time -p ls
O,
$ time ls
Salida de muestra:
dir1 dir2 file1 file2 mcelog real 0m0.007s user 0m0.001s sys 0m0.004s
$ time ls -a . .bash_logout dir1 file2 mcelog .sudo_as_admin_successful .. .bashrc dir2 .gnupg .profile .wget-hsts .bash_history .cache file1 .local .stack real 0m0.008s user 0m0.001s sys 0m0.005s
Los comandos anteriores muestran el tiempo total de ejecución de 'ls
' dominio. Reemplace "ls
" con cualquier comando/proceso de su elección para encontrar el tiempo total de ejecución.
Aquí,
real
-se refiere al tiempo total tomado por comando/programa,user
- se refiere al tiempo que tarda el programa en modo usuario,sys
- se refiere al tiempo que tarda el programa en modo kernel.
También podemos limitar el comando para que se ejecute solo durante un tiempo determinado. Consulte la siguiente guía para obtener más detalles.
- Cómo ejecutar un comando durante un tiempo específico en Linux
tiempo frente a /usr/bin/tiempo
Como habrás notado, usamos dos comandos 'time' y '/usr/bin/time
' en los ejemplos anteriores. Entonces, es posible que se pregunte cuál es la diferencia entre ellos.
Primero, veamos qué es realmente 'time
' está usando 'type
' dominio. Para aquellos que no saben, el Tipo El comando se utiliza para averiguar la información sobre un comando de Linux. Para obtener más detalles, consulte esta guía .
$ type -a time time is a shell keyword time is /usr/bin/time
Como puede ver en el resultado anterior, el tiempo es ambos,
- Una palabra clave integrada en el shell BASH
- Un archivo ejecutable, es decir,
/usr/bin/time
Dado que las palabras clave de shell tienen prioridad sobre los archivos ejecutables, cuando solo ejecuta time comando sin la ruta completa, ejecuta un comando de shell integrado. Pero, cuando ejecuta /usr/bin/time
, ejecutas un verdadero tiempo GNU programa. Entonces, para acceder al comando real, es posible que deba especificar su ruta explícita. ¿Claro? ¡Bien!
La palabra clave de shell 'tiempo' incorporada está disponible en la mayoría de los shells como BASH, ZSH, CSH, KSH, TCSH, etc. La palabra clave de shell 'tiempo' tiene menos opciones que los ejecutables. La única opción que puede usar en la palabra clave 'tiempo' es -p
.
Ahora sabe cómo encontrar el tiempo total de ejecución de un comando/proceso dado usando el comando 'tiempo'. ¿Quiere saber un poco más sobre la utilidad 'GNU time'? ¡Sigue leyendo!
Una breve introducción sobre el programa 'GNU time'
El programa de tiempo GNU ejecuta un comando/programa con argumentos dados y resume el uso de recursos del sistema como salida estándar después de que se completa el comando. A diferencia de la palabra clave 'tiempo', el programa de tiempo GNU no solo muestra el tiempo utilizado por el comando/proceso, sino también otros recursos como memoria, E/S y llamadas IPC.
La sintaxis típica del comando Tiempo es:
/usr/bin/time [options] command [arguments...]
Las 'opciones' en la sintaxis anterior se refieren a un conjunto de indicadores que se pueden usar con el comando de tiempo para realizar una funcionalidad particular. La lista de opciones disponibles se proporciona a continuación.
-f
,--format
- Utilice esta opción para especificar el formato de salida que desee.-p
,--portability
- Utilice el formato de salida portátil.-o
archivo,--output
=ARCHIVO - Escribe la salida en FILE en lugar de mostrarse como salida estándar.-a
,--append
- Agregue la salida al ARCHIVO en lugar de sobrescribirlo.-v
,--verbose
- Esta opción muestra la descripción detallada de la salida de la utilidad 'tiempo'.--quiet
- Esta opción evita que la utilidad de tiempo 'tiempo' informe el estado del programa.
Cuando use el programa 'GNU time' sin ninguna opción, verá un resultado como el siguiente.
$ /usr/bin/time wc /etc/hosts 9 28 273 /etc/hosts 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k 0inputs+0outputs (0major+73minor)pagefaults 0swaps
Si ejecuta el mismo comando con la palabra clave incorporada de shell 'tiempo', el resultado sería un poco diferente:
$ time wc /etc/hosts 9 28 273 /etc/hosts real 0m0.006s user 0m0.001s sys 0m0.004s
Algunas veces, es posible que desee escribir el resultado del uso de recursos del sistema en un archivo en lugar de mostrarlo en la Terminal. Para hacerlo, use -o
marca como a continuación.
$ /usr/bin/time -o file.txt ls dir1 dir2 file1 file2 file.txt mcelog
Como puede ver en la salida, la utilidad Time no muestra la salida. Porque escribimos la salida en un archivo llamado file.txt
. Echemos un vistazo a este archivo:
$ cat file.txt 0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k 0inputs+0outputs (0major+106minor)pagefaults 0swaps
Cuando usas -o marca, si no hay un archivo llamado 'archivo.txt', creará y escribirá la salida en él. Si el file.txt
ya está presente, sobrescribirá su contenido.
También puede agregar la salida al archivo en lugar de sobrescribirlo usando -a
bandera.
$ /usr/bin/time -a file.txt ls
El -f
bandera permite a los usuarios controlar el formato de la salida según su gusto. Digamos, por ejemplo, que el siguiente comando muestra la salida de 'ls
' y muestra solo el usuario, el sistema y el tiempo total.
$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls dir1 dir2 file1 file2 mcelog 0:00.00 real, 0.00 user, 0.00 sys
Tenga en cuenta que el comando de shell integrado 'time' no es compatible con todas las funciones del programa de tiempo de GNU.
Para obtener más detalles sobre la utilidad de tiempo de GNU, consulte las páginas man.
$ man time
Para obtener más información sobre la palabra clave 'Tiempo' incorporada de Bash, ejecute:
$ help time