Comprender el formato de tiempo transcurrido ps para procesos de larga ejecución


10

Estoy usando un pscomando como parte de un ejercicio para identificar procesos que se ejecutan por más tiempo que un umbral determinado.

Estoy usando la siguiente plantilla para obtener el tiempo transcurrido para un comando de proceso conocido:

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

Noto que con procesos de ejecución corta, el valor de etime (tiempo transcurrido) toma el formato minutes:secondsy a partir de esto puedo determinar fácilmente cuánto tiempo ha estado ejecutándose un proceso.

Para procesos de ejecución muy largos (días largos), no entiendo el formato.

Tengo un proceso de servidor MySQL que se htopmuestra funcionando durante 126 horas.

Ejecutar ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'me da un valor de 9-03:35:32.

Mi mejor suposición es que esto significa 9 algo, 3 horas, 35 minutos, 32 segundos. No puedo entender cuáles son las unidades para el 9.

El proceso en cuestión ha estado funcionando 126 horas, aproximadamente 5,25 días. Esto sugiere que el 9 en la salida anterior no representa días. No pueden ser medio día ya que (9 * 12) horas + 3 horas + 35 minutos + 32 segundos son menos de 5 días.

¿Cómo interpreto el valor del tiempo transcurrido que veo para los procesos de larga ejecución? ¿Qué unidades acompañan al 9 en la salida anterior?


Aquí, está viendo el formato de hora POSIX. Minutos: segundos es el formato de hora BSD. Linux psmuestra uno u otro según las opciones que pase.
Gilles 'SO- deja de ser malvado'

Para verificar dos veces, intente en etimeslugar de etimey compare los resultados.
Ruslan

Respuestas:


16

De acuerdo con el estándar :

En el entorno local POSIX, el tiempo transcurrido desde que se inició el proceso, en la forma:

[[dd-]hh:]mm:ss

donde dd representará el número de días, hh el número de horas, mm el número de minutos y ss el número de segundos. El campo dd será un entero decimal. Los campos hh, mm y ss serán enteros decimales de dos dígitos rellenados a la izquierda con ceros.

Entonces, el 9 significa días, lo creas o no. ¿Podría estar malinterpretando la salida de htop? ¿Qué dice top (que tiene un formato de hora minutes:seconds)? ¿Estás seguro de que el campo que estás viendo en htop es equivalente a etime? (por ejemplo, ¿podría significar 126 minutos de tiempo de CPU ?)


Gracias por la confirmación. htop definitivamente muestra 126 horas, pero creo que este podría no ser el tiempo de la pared, sino otro momento (quizás el tiempo de la CPU). El campo en htop no es equivalente a etime, asumí erróneamente aquí.
Jon Cram el

1
@ JonCram ¿Estás seguro de que son horas? La parte superior original solo muestra minutos (es decir, irá a minutos por encima de 60 en lugar de dividirse en horas), un número como 126: 37 significa 126 minutos y 37 segundos. Estaba pensando que htop podría ser lo mismo. 126 horas de tiempo de CPU en 9 días parece mucho.
Random832
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.