Cómo verificar el tiempo de ejecución de un proceso en Linux

¿Se ha estado preguntando cómo puede encontrar un tiempo de ejecución de un proceso en un sistema Linux o Unix ?. Esta guía le mostrará una serie de herramientas que resultan útiles cuando intenta encontrar el tiempo de ejecución de un proceso en Linux.

A veces, es posible que tenga que trabajar en procesos de ejecución lenta o tener una Internet lenta o ejecutar un programa que necesita para realizar un seguimiento de su tiempo de ejecución. Veamos las principales herramientas que debería probar para esto. Todos los comandos que se muestran en esta guía se han probado en el servidor Ubuntu 16.04 y en CentOS 7.

Estilo

Gnomon es una utilidad que se utiliza para anotar declaraciones de registro de la consola con marcas de tiempo y encontrar procesos lentos en un sistema Linux. Esta herramienta es útil para procesos de larga duración en los que le gustaría tener un registro histórico de lo que está tardando tanto.

Instalación de Gnomon

Dado que Gnomon es una herramienta escrita en Node.js, necesita Node.js instalado en su sistema para poder instalar gnomon con sobre el nivel del mar gerente de empaquetación. Una vez que tengas sobre el nivel del mar presente en su sistema Linux, luego proceda a instalarlos usando:

$ npm install -g gnomon
/usr/local/bin/gnomon -> /usr/local/lib/node_modules/gnomon/bin/gnomon
+ [email protected]
added 56 packages in 13.076s

Usando Gnomon

Para anteponer una marca de tiempo a cada línea, debe canalizar el comando a gnomon. Indicará cuánto tiempo tardó en ejecutarse el proceso. Por defecto, gnomon mostrará los segundos transcurridos entre cada línea, pero eso es configurable.

Echa un vistazo a continuación example que imprime el tiempo necesario para hacer 5 solicitudes de ping al servidor DNS de Google.

$ ping -c 5 8.8.8.8 | gnomon 0.0049s PING 8.8.8.8 (8.8.8.8): 56 data bytes
 0.3603s 64 bytes from 8.8.8.8: icmp_seq=0 ttl=59 time=179.114 ms
 1.0025s 64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=182.345 ms
 1.0008s 64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=183.636 ms
 1.0119s 64 bytes from 8.8.8.8: icmp_seq=3 ttl=59 time=181.139 ms
 0.0002s 64 bytes from 8.8.8.8: icmp_seq=4 ttl=59 time=190.970 ms
 0.0002s 
 0.0001s --- 8.8.8.8 ping statistics ---
 0.0001s 5 packets transmitted, 5 packets received, 0.0% packet loss
 0.0020s round-trip min/avg/max/stddev = 179.114/183.441/190.970/4.048 ms
 0.0002s 
 
 Total 3.3842s

El tiempo total transcurrido es 3.3842s.

Las opciones disponibles son:

A continuación se muestra una lista de opciones disponibles:

-t | –type = :

Tipo de marca de tiempo para mostrar.
línea-transcurrida: Número de segundos que la línea mostrada fue la última línea.
total transcurrido: Número de segundos desde el inicio del proceso.
absoluto: una marca de tiempo absoluta en UTC.

Ejemplo:

$ ping -c 3 8.8.8.8 | gnomon --type=elapsed-total
 0.0049s PING 8.8.8.8 (8.8.8.8): 56 data bytes
 0.2336s 64 bytes from 8.8.8.8: icmp_seq=0 ttl=59 time=46.288 ms
 1.2798s 64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=35.811 ms
 1.2801s 64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=80.783 ms
 1.2802s 
 1.2804s --- 8.8.8.8 ping statistics ---
 1.2805s 3 packets transmitted, 3 packets received, 0.0% packet loss
 1.2821s round-trip min/avg/max/stddev = 35.811/54.294/80.783/19.213 ms
 1.2823s 
 
 Total 1.2824s

-f | –format = “formato”: formatea la marca de tiempo absoluta, usando cadenas de formato de fecha PHP. Si el tipo es línea transcurrida o total transcurrido, esta opción se ignora. El formato predeterminado es “H: yo: su O

-r  | --real-time=<number|false>

Ejemplo para deshabilitar la actualización en tiempo real:

# ping -c 3 8.8.8.8 | gnomon --real-time=false
 0.0040s PING 8.8.8.8 (8.8.8.8): 56 data bytes
 0.7847s 64 bytes from 8.8.8.8: icmp_seq=0 ttl=59 time=69.803 ms
 0.9316s 64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=140.597 ms
 0.0001s 64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=68.122 ms
 0.0001s 
 0.0001s --- 8.8.8.8 ping statistics ---
 0.0001s 3 packets transmitted, 3 packets received, 0.0% packet loss
 0.0020s round-trip min/avg/max/stddev = 68.122/92.841/140.597/33.776 ms
 
 Total 1.7229s

-h | –high = segundos: umbral alto

-m | –medium = segundos: umbral medio. Funciona igual que el umbral alto descrito anteriormente, pero colorea la marca de tiempo brillante en su lugar.

Verifique el tiempo del proceso en ejecución usando ps

Puedes usar PD comando para verificar el tiempo que se ha estado ejecutando un proceso en particular. Primero debe encontrar el ID del proceso y luego usarlo para encontrar el tiempo transcurrido.

Para identificar el ID del proceso, puede utilizar una herramienta como pidof

$ pidof mpd 
1388

Luego usa ps con opciones -a mi carne para encontrar el tiempo de ejecución transcurrido.

$ ps -p 1388 -o etime

ELAPSED
 05-11:03:02

etime La opción muestra el tiempo transcurrido desde que se inició el proceso, en la forma [[DD-]hh:]mm: ss. Entonces desde arriba example, el proceso se ha estado ejecutando durante 5 días, 11 horas y 3 minutos. Usar veces opción para obtener el tiempo transcurrido en segundos.

Esta opción de comando también se puede utilizar para varios procesos. El example a continuación se mostrará la hora de inicio y la hora de ejecución de todos los procesos en mi servidor Ubuntu.

$ ps -eo pid,lstart,etime,args

La salida tiene 4 columnas:

PID -> ID del proceso en ejecución

EMPEZADO -> La hora en que se inició inicialmente el proceso

TRANSCURRIDO -> Tiempo total de ejecución del proceso

MANDO -> Proceso ejecutado comando

Usando el comando de tiempo en Ubuntu

El comando time informa cuánto tiempo tardó en ejecutarse el comando en un sistema Linux. Puede instalarlo si falta en el sistema Ubuntu usando:

$ sudo apt-get install time

uso del comando de tiempo:

# time [-p] command [arguments...]

La salida de tiempo tendrá:

  • El tiempo real transcurrido entre la invocación y la terminación del comando.
  • El tiempo de CPU del usuario.
  • El tiempo de CPU del sistema.

Considere a continuación example para comprobar el uso del disco del directorio / root.

# time du -sh /root/
464K /root/
real 0m0.007s
user 0m0.002s

A partir de la salida, el tiempo real que tardó en ejecutarse el comando es 0m0.007s.

Hagamos uno más, un ping a 8.8.8.8

# time ping -c 3 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=60 time=7.28 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=60 time=11.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=60 time=7.54 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 7.281/8.925/11.952/2.145 ms

real 0m2.059s
user 0m0.001s
sys 0m

El tiempo de ejecución real es 2.059 segundos.

Ahora sabe cómo obtener el tiempo de ejecución del proceso de Linux en Linux. El primer método es ideal para procesos interactivos. Para los procesos que se ejecutan en segundo plano, siempre puede obtener su tiempo de ejecución usando el comando ps.