Script Bash: Controlar memoria de un proceso
Entrada rápida…
Imaginaros que necesitáis saber el uso concreto de memoria de un proceso linux mediante bash. La primera alternativa que usaríamos la mayoría sería hacer un “ps -aux” para revisar los procesos del sistema. Pero esto sólo nos daría un porcentaje de lo que está usando y no la memoria real en megabytes:
Si usamos “top” nos encontramos algo parecido:
Como veis, sólo vemos los porcentajes. Así que os dejo un script que os puede solucionar este problema. Generamos el fichero y le damos permisos de ejecución:
1 2 |
pi@p0:~ $ nano script-memoria.sh pi@p0:~ $ chmod +x script-memoria.sh |
El contenido del script será el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/bin/bash i=$1 PROCESOS=$(ps -o pid,user,%mem,command ax | grep $i | head -n1 | awk '{printf $1 ":" $2 ":" $4}') PID=$(echo $PROCESOS | cut -d: -f1) OWNER=$(echo $PROCESOS | cut -d: -f2) COMMAND=$(echo $PROCESOS | cut -d: -f3,4) MEMORY=$(pmap $PID | tail -n1 | awk '{printf $2}') MEMORY=$(echo $MEMORY | tr -d "K") MEMORY=$(echo "scale=4; $MEMORY/1024" | bc) MEMORY=$(echo "$MEMORY MB") echo "" echo "PROCESO ID o PID: $PID" echo "USUARIO: $OWNER" echo "COMANDO: $COMMAND" echo "MEMORIA UTILIZADA: $MEMORY" echo "" |
Le pasamos como parámetro el PID del proceso que nos interesa:
1 2 3 4 5 6 |
root@p0:/home/pi# ./script-memoria.sh 608 PROCESO ID o PID: 608 USUARIO: root COMANDO: /usr/bin/rpiboot MEMORIA UTILIZADA: 11.3359 MB |
Y ya tenemos el dato en megabytes
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
No funciona realmente sobre un SUSE 15.
He dedpurado un poco y el problema debe estar en la herramienta bc.
Error standard_in 1
Gracias.
Lo único señalar que en esa memoria del proceso también se encuentran la memoría utilizada por librerías compartidas
Gracias