Quiero obtener el uso de CPU y memoria de un solo proceso en Linux: conozco el PID. Con suerte, puedo obtenerlo cada segundo y escribirlo en un CSV usando el comando 'watch'. ¿Qué comando puedo usar para obtener esta información de la línea de comandos de Linux?
linux
shell
memory-management
cpu-usage
Supertux
fuente
fuente
Respuestas:
(Puede dejar "cmd" pero eso puede ser útil para la depuración).
Tenga en cuenta que esto proporciona un uso promedio de la CPU del proceso durante el tiempo que se ha estado ejecutando.
fuente
| tail -n +2
ps
). Este no es el uso real de la CPU justo a tiempo. También puede ser muy diferente de lo quetop
muestra, por ejemplo.ps -e -o pcpu,args
mostrará el promedio de la CPU durante la vida útil del proceso, que obviamente no es lo que desea si es un proceso de larga duraciónUna variante de la respuesta de caf :
top -p <pid>
Esto actualiza automáticamente el uso de la CPU, por lo que es bueno para el monitoreo.
fuente
pgrep
:top -p $(pgrep process_name)
Puede obtener los resultados por el nombre del proceso usando
la
-C
opción le permite usar el nombre del proceso sin saber que es pid.fuente
pid
solo debería funcionar.ps -C chrome -o pid,%cpu,%mem,cmd
Utilice pidstat (de sysstat - Enlace de referencia ).
por ejemplo, para monitorear estos dos ID de proceso (12345 y 11223) cada 5 segundos use
fuente
pidstat
que es un gran comando, y útil también por las secuencias de comandos!pidstat
También da un buen promedio. Es una pena que no haya encontrado una forma más elegante depidstat -u 1 10 | grep ^Average | sort -r -n -b -k 8,8
ps
comando (no debe usar):top
comando (debe usar):Use
top
para obtener el uso de la CPU en tiempo real (intervalo corto actual):top -b -n 2 -d 0.2 -p 6962 | tail -1 | awk '{print $9}'
hará eco como:
78.6
-b
: Por lotes-n 2
: Número de iteraciones, use2
porque: cuando lo ejecuta por primera vez, no tiene una muestra previa con la que comparar, por lo que estos valores iniciales son los porcentajes desde el arranque.-d 0.2
: Tiempo de retraso (en segundo lugar, aquí son 200 ms)-p 6962
: Monitor-PIDtail -1
: la última filaawk '{print $9}'
: la novena columna (el número de uso de la CPU)fuente
Lanzar un programa y monitorearlo
Este formulario es útil si desea comparar fácilmente un ejecutable:
Ahora, cuando presiona Ctrl + C, sale del programa y deja de monitorear. Salida de muestra:
Relacionado: /unix/554/how-to-monitor-cpu-memory-usage-of-a-single-process
Probado en Ubuntu 16.04.
fuente
Puede usar
top -b
y grep el pid que desee (con la-b
parte superior de la bandera se ejecuta en modo por lotes), o también usar la-p
bandera y especificar el pid sin usar grep.fuente
Como se comentó en la respuesta anterior de caf , ps y, en algunos casos, pidstat le proporcionarán el promedio de vida útil de la pCPU. Para obtener resultados más precisos use top. Si necesita ejecutar top una vez que puede ejecutar:
o para procesar solo datos y encabezado:
sin encabezados:
fuente
o por proceso
fuente
Para obtener el uso de memoria solo de su aplicación (a diferencia de las bibliotecas compartidas que usa, debe usar la interfaz smaps de Linux). Esta respuesta lo explica bien .
fuente
donde la primera columna es el PID, el uso de la CPU de la segunda columna, el uso de la memoria de la tercera columna.
fuente
PID - ID del proceso
etime - Proceso en ejecución / Duración en vivo
% cpu - uso de CPU
% mem - Uso de memoria
cmd - Comando
Reemplace el nombre del proceso con el proceso que desee rastrear, mysql nginx php-fpm, etc.
fuente
Todas las respuestas aquí muestran solo el porcentaje de memoria para el PID.
Aquí hay un ejemplo de cómo obtener el uso de memoria rss en KB para todos los procesos de apache, reemplace "grep apache" con "grep PID" si solo quiere ver un PID específico:
Esto imprime:
Con CPU%:
Salida:
fuente
Para aquellos que lucharon por un tiempo preguntándose por qué la respuesta seleccionada no funciona:
No hay espacio ibetween
%cpu,
y%mem
.fuente
Este es un buen truco para seguir uno o más programas en tiempo real y al mismo tiempo ver la salida de alguna otra herramienta:
watch "top -bn1 -p$(pidof foo),$(pidof bar); tool"
fuente
El siguiente comando obtiene el promedio de uso de CPU y memoria cada 40 segundos para un proceso específico (pid)
Salida para mi caso (primeras dos líneas para uso de CPU, segundas dos líneas para memoria):
fuente
(Si está en MacOS 10.10, pruebe la opción acumulativa -c de arriba:
(Esta opción no está disponible en otros Linux, probado con Scientific Linux el6 y RHEL6)
fuente
Lista de arriba el proceso de consumo de memoria y CPU superior
fuente
Según la respuesta de @ caf, esto funciona muy bien para mí.
Calcule el promedio para el PID dado:
measure.sh
Uso:
fuente
Uso de CPU y memoria de un solo proceso en Linux o puede obtener los 10 principales procesos utilizados de la CPU utilizando el siguiente comando
ps -aux --sort -pcpu | cabeza -n 11
fuente