Re: monitorare utilizzo di RAM
Gianluca Mangiarotti ha scritto il 28/04/2016 alle 11:53:
vi > Se non erro il valore è espresso in KB, almeno così risulta dal man
purtroppo no come dicevo... top aggiunge una m mentre htop aggiunge M
per esprimere il consumo in MiB. Ora ero interessato a sapere come
esprime il consumo in GiB.
Se a qualcuno interessa questo è lo script:
#!/bin/bash
pname=dar
logger=$(which logger)
[ -z $logger ] && echo "E: logger no found" && exit 1
logger="$logger -t $(basename $0 .sh): "
while [ 1 = 1 ]; do
pid=$(pidof $pname)
maxram=0
if [ -n "$pid" ]; then
$logger "Inizio monitoraggio utilizzo RAM per il processo $pname
($pid)"
while [ "$(pidof $pname)" = "$pid" ]; do
curram=$(top -p $pid -b -n1 |\
tail -n1 |\
sed
's/^[[:space:]]*'$pid'[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*\([^[:space:]]*\).*$/\1/')
[ -n "$(echo $curram | grep [0-9]*m$)" ] && curram=$(echo
$curram | grep -o "[0-9]*") && curram=$(($curram*1024))
[ -n "$(echo $curram | grep [0-9]*g$)" ] && curram=$(echo
$curram | grep -o "[0-9]*") && curram=$(($curram*1024*1024))
if [ -z "$(echo $curram | grep ^[0-9]*$)" ]; then
$logger "E: errore nella ricerca della ram utilizzata:
$curram non contiene un valore interpretabile come consumo di ram"
else
[ $curram -gt $maxram ] && maxram=$curram
fi
sleep 1
done
$logger "il processo $pname ($pid) ha consumato al massimo
"$maxram"K di RAM"
fi
sleep 10
done
Lo script non fa altro che loggare in sysylog il consumo di RAM del
processo chiamato $pname (nello script ad esempio si monitorizza il
consumo di dar).
Un saluto
Piviul
Reply to: