GNU/Linux >> Tutoriales Linux >  >> Linux

Ejemplos de comandos de tiempo de Linux

Hay momentos en los que es posible que desee perfilar su programa en parámetros como:

  • Tiempo que tarda el programa en modo usuario
  • Tiempo que tarda el programa en modo kernel
  • Uso promedio de memoria por parte del programa
  • etc

En Linux tenemos una utilidad 'tiempo' que está diseñada específicamente para este propósito. La utilidad 'tiempo' toma el nombre de un programa como entrada y muestra información sobre los recursos utilizados por el programa. Además, si el comando existe con un estado distinto de cero, esta utilidad muestra un mensaje de advertencia y un estado de salida.

La sintaxis de 'tiempo' es:

/usr/bin/time [options] program [arguments]

En la sintaxis anterior, las 'opciones' se refieren al conjunto de banderas/valores opcionales que se pueden pasar a la utilidad 'tiempo' para configurar o desactivar una funcionalidad en particular. Las siguientes son las opciones de comando de tiempo disponibles:

  • -v, –verbose:esta opción se pasa cuando se requiere una descripción detallada de la salida.
  • –bastante:esta opción evita que la utilidad 'tiempo' informe el estado del programa.
  • -f, –format:Esta opción le permite al usuario controlar el formato de salida de la utilidad 'time'.
  • -p, –portability:esta opción establece el siguiente formato de salida para que la salida cumpla con POSIX
  • real %e
    user %U
    sys %S
  • -o FILE, –output=FILE :Esta opción le permite al usuario redirigir la salida de la utilidad 'time' a un archivo. Esta opción permite que la utilidad 'tiempo' sobrescriba el archivo ARCHIVO.
  • -a, –append:esta opción permite que la utilidad 'time' agregue la información al archivo FILE en lugar de sobrescribirla.

Cuando se ejecuta el comando 'tiempo', el siguiente es el tipo de salida que da:

# /usr/bin/time ls
anaconda-ks.cfg  bin  install.log  install.log.syslog  mbox
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 3888maxresident)k
0inputs+0outputs (0major+304minor)pagefaults 0swaps

Como podemos ver arriba, además de ejecutar el comando, las dos últimas líneas de la salida son la información de recursos que genera el comando 'time'.

Nota:En el ejemplo anterior, el comando 'tiempo' se ejecutó sin ninguna opción. Así que esta es una salida predeterminada generada por el comando 'tiempo', que no tiene el formato correcto.

Como podemos ver en la salida, el formato predeterminado de la salida generada es:

%Uuser %Ssystem %Eelapsed %PCPU (%Xtext+%Ddata %Mmax)k
%Iinputs+%Ooutputs (%Fmajor+%Rminor)pagefaults %Wswaps

La opción de formato

Esta opción le permite al usuario decidir la salida generada por el comando 'tiempo'. En la última sección discutimos el formato predeterminado que se usa en la salida. Aquí, en esta sección, aprenderemos cómo especificar formatos personalizados.

La cadena de formato generalmente consta de "especificadores de recursos" intercalados con texto sin formato. Un signo de porcentaje (`%') en la cadena de formato hace que el siguiente carácter se interprete como un especificador de recursos.

Una barra invertida ('\') introduce un 'escape de barra invertida', que se traduce en un solo carácter de impresión en la salida. '\t' genera un carácter de tabulación, '\n' genera una nueva línea y '\\' genera una barra invertida. Una barra invertida seguida de cualquier otro carácter genera un signo de interrogación (`?’) seguido de una barra invertida, para indicar que se proporcionó un escape de barra invertida no válido.

El resto del texto de la cadena de formato se copia textualmente en la salida. time siempre imprime una nueva línea después de imprimir la información de uso de recursos, por lo que normalmente las cadenas de formato no terminan con un carácter de nueva línea (o `0).

Por ejemplo:

$ /usr/bin/time -f "\t%U user,\t%S system,\t%x status" date
Sun Jan 22 17:46:58 IST 2012
	0.00 user,	0.00 system,	0 status

Entonces vemos que en el ejemplo anterior, intentamos cambiar el formato de salida usando un formato de salida diferente.

Recursos

Ya que discutimos anteriormente que la utilidad 'tiempo' muestra información sobre el uso de recursos por parte de un programa, en esta sección vamos a enumerar los recursos que pueden ser rastreados por esta utilidad y los especificadores correspondientes.

Desde la página del manual:

  • C:nombre y argumentos de la línea de comando del comando que se está cronometrando.
  • D:tamaño medio del área de datos no compartidos del proceso, en kilobytes.
  • E:tiempo real transcurrido (reloj de pared) utilizado por el proceso, en [horas:]minutos:segundos.
  • F:número de fallas de página importantes o que requieren E/S que ocurrieron mientras se ejecutaba el proceso. Estas son fallas en las que la página realmente migró fuera de la memoria principal.
  • I:número de entradas del sistema de archivos por el proceso.
  • K :uso de memoria total promedio (datos+pila+texto) del proceso, en kilobytes.
  • M:tamaño máximo del conjunto residente del proceso durante su ciclo de vida, en kilobytes.
  • O:número de salidas del sistema de archivos por proceso.
  • P :porcentaje de la CPU que obtuvo este trabajo. Estos son solo los tiempos de usuario + sistema divididos por el tiempo total de ejecución. También imprime un signo de porcentaje.
  • R:número de fallas de página menores o recuperables. Son páginas que no son válidas (por lo que fallan) pero que aún no han sido reclamadas por otras páginas virtuales. Por lo tanto, los datos de la página siguen siendo válidos, pero las tablas del sistema deben actualizarse.
  • S :número total de segundos de CPU utilizados por el sistema en nombre del proceso (en modo kernel), en segundos.
  • U:número total de segundos de CPU que el proceso usó directamente (en modo de usuario), en segundos.
  • W:número de veces que el proceso se sacó de la memoria principal.
  • X:cantidad promedio de texto compartido en el proceso, en kilobytes.
  • Z:tamaño de página del sistema, en bytes. Esta es una constante por sistema, pero varía entre sistemas.
  • c :número de veces que el proceso cambió de contexto involuntariamente (porque expiró el período de tiempo).
  • e :tiempo real transcurrido (reloj de pared) utilizado por el proceso, en segundos.
  • k :número de señales entregadas al proceso.
  • p :tamaño medio de la pila no compartida del proceso, en kilobytes.
  • r :número de mensajes de socket recibidos por el proceso.
  • s :número de mensajes de socket enviados por el proceso.
  • t :tamaño medio del conjunto residente del proceso, en kilobytes.
  • w:número de veces que el programa cambió de contexto voluntariamente, por ejemplo, mientras esperaba que se completara una operación de E/S.
  • x :estado de salida del comando.

Entonces podemos ver que hay una larga lista de recursos cuyo uso puede ser rastreado por la utilidad 'tiempo'.

¿Por qué /usr/bin/time? (En lugar de solo tiempo)

No usemos /usr/bin/time y usemos 'time' en su lugar.

$ time -f "\t%U user,\t%S system,\t%x status" date
-f: command not found 

real	0m0.255s
user	0m0.230s
sys	0m0.030s

Como se ve en el resultado anterior, el comando 'tiempo' cuando se usa sin la ruta completa (/usr/bin/time) arroja un error con respecto al indicador '-f'. Además, el formato de salida no es el que especificamos en el comando ni el formato predeterminado que discutimos anteriormente. Esto condujo a una confusión sobre cómo se generó esta salida.

Cuando el comando 'tiempo' se ejecuta sin la ruta completa (/usr/bin/time), entonces se ejecuta el comando 'tiempo' integrado del shell bash.

  • Use 'man time' para ver la página man de /usr/bin/time
  • Use 'tiempo de ayuda' para ver la información sobre el tiempo de bash incorporado.

Linux
  1. 7 ejemplos de comandos Linux df

  2. 8 ejemplos de comandos TR de Linux

  3. 12 Ejemplos de opciones de formato de salida de comando de tiempo de UNIX/Linux

  4. Ejemplos de comandos rm en Linux

  5. Ejemplos de comandos ps en Linux

Comando wc Linux con ejemplos

Comando de tiempo de Linux

11 ejemplos útiles de comandos de fecha de Linux

Ejemplos de comandos echo de Linux

Ejemplos de comandos de fecha de Linux

Ejemplos de comandos id en Linux