script para registrar todas las estadísticas de un proceso en particular

script para registrar todas las estadísticas de un proceso en particular

Quiero monitorear el uso de la CPU, el uso de lectura/escritura del disco para un proceso en particular, por ejemplo ./myprocess.

Monitorear topel comando de la CPU parece ser una buena opción y leer y escribir iotopparece ser una opción útil.

Por ejemplo, para monitorear la lectura/escritura por cada segundo, uso el comando iotop -tbod1 | grep "myprocess".

Mi dificultad es que solo quiero almacenar tres variables, a saber, lectura/seg, escritura/seg, uso de CPU/seg. ¿Podría ayudarme con un script que combine las salidas de las tres variables mencionadas anteriormente topy iotopque se almacenen en un archivo de registro?

¡Gracias!

Respuesta1

Qué tal siPidStat?. ¿Lo has probado? Es posible que necesite el Pid para el proceso que desea monitorear, pero debería ser bastante fácil de obtener con el pscomando y un poco de awkcorte.

Es parte del paquete sysstatque puede instalar en sistemas basados ​​en .deb escribiendoapt-get install sysstat

Respuesta2

Puedes intentar usar prtstat ( sudo apt-get install psmisc):

watch -n1 prtstat <PID> | tee mylog.log

volcará las estadísticas del proceso cada segundo. Si está interesado en analizar esos datos, utilice la versión sin formato (-r).

Por ejemplo, si desea utime, puede extender el comando anterior a:

prtstat -r 30557 | grep -w utime | awk '{print $4}'

Respuesta3

Puedes usaraudríapara esta tarea:

audria -d 1 $(pidof myprocess) | awk -F "," '{print $7, $28, $32}'

Esto establecerá el retraso en1segundo, monitorearmi procesoe imprimir el actualUPC(campo 7),leer bytes/s(campo 28) yescribir bytes/s(campo 32). Los contadores de lectura/escritura aquí excluyen los bytes almacenados en caché; si desea incluirlos, elija campos26y30en cambio.

audria también es capaz de ejecutar su proceso para monitorearlo desde el principio si es necesario. También puede elegir un intervalo más corto o especificar varios PID para monitorear.

Respuesta4

Podrías intentar mirar el contenido de /proc/$PID/statusperiódicamente; eso debería brindarle una buena cantidad de la información que está buscando.

información relacionada