[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: