GNU/Linux >> Tutoriales Linux >  >> Linux

Encuentre el tiempo de ejecución de un comando o proceso en Linux

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í,

  1. real -se refiere al tiempo total tomado por comando/programa,
  2. user - se refiere al tiempo que tarda el programa en modo usuario,
  3. 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

Linux
  1. Programar una tarea con Linux al mando

  2. Domina el comando ls de Linux

  3. Cómo usar el comando find de Linux para buscar archivos

  4. encontrar ejemplos de comandos en Linux

  5. Una guía para el comando "Buscar" de Linux

Cómo cambiar la prioridad de un proceso en Linux

Cómo encontrar archivos con el comando fd en Linux

El comando del temporizador en Linux

15 ejemplos súper útiles del comando Buscar en Linux

Entendiendo el comando time en Linux

El comando find Directory de Linux:Explicación