Tisztelt Kollégák!
Nagyon hiányoltam egy olyan parancsot, amely segítségével megnézhessem, hogy a futó processzeim pontosan mennyi memóriát zabálnak. Erre írtam a következő kis scriptet, akinek tetszik, használja nyugodtan:
#!/bin/bash
verzio="0.0.1"
programname=`basename $0`
wiki="w";
opcio="k";
cim="o";
if [ $# -gt 2 ]
then
echo "Usage: $programname [-x][m|k|b][p] [v|h]";
echo " The '-x' switch shows just the biggest memory consumption.";
echo " m - Megabytes, k - Kilobytes, b - bytes";
echo " p - Show PID-s only instead of full path";
echo " v - Shows version and exits.";
echo " v - This help.";
exit 1
fiwhile getopts ":mkbxpvh" kapcs
do
case $kapcs in
"m") opcio="m";;
"k") opcio="k";;
"b") opcio="b";;
"x") wiki="m"; echo "Let's see, who is eating the memory...";;
"p") cim="j"; echo "Just PID-s are listed...";;
"v") echo "Memory consumption - version $verzio - by Frantique"; exit 0;;
"h") echo "";
echo "Usage: $programname [-x][m|k|b][p] [v|h]";
echo " The '-x' switch shows just the biggest memory consumption.";
echo " m - Megabytes, k - Kilobytes, b - bytes";
echo " p - Show PID-s only instead of full path";
echo " v - Shows version and exits.";
echo " v - This help.";
echo "";
exit 0;;
"?") opcio="e"; echo "Bad argument passed... Assuming Kilobytes output.";;
esac
done;echo "Please wait, counting...";
rm -rf /tmp/putme*
pstree -p | sed s/"[^0-9]"/"\n"/g | sort | uniq > /tmp/putmeout
i=1
touch /tmp/putmebackfor a in `cat /tmp/putmeout`
do
if [ $i -ne 1 ]
then
fnev=`pmap $a | grep ":"`
if [ $cim = "j" ]
then
fnev=`echo $fnev | cut -d " " -f 1 | sed s/":"/""/g`
fi
mennyi=`pmap $a | grep "total" | sed s/"total"/""/g | sed s/" "/""/g | sed s/"K"/""/g`
if [ $mennyi ]
then
if [ $opcio = "m" ]
then
mennyi=`expr $mennyi / 1024`;
mennyi="$mennyi Mb.";
fi
if [ $opcio = "k" -o $opcio = "e" ]
then
mennyi="$mennyi Kb.";
fi
if [ $opcio = "b" ]
then
mennyi=`expr $mennyi * 1024`; mennyi="$mennyi bytes";
fi
echo "$mennyi ---> PID $fnev" >> /tmp/putmeback;
fi
fi
i=0;
doneif [ $wiki = 'm' ]
then
echo "-------------------------------------------------------"
cat /tmp/putmeback | uniq | sort -n | tail -n 1
rm -rf /tmp/putme*
echo "-------------------------------------------------------"exit 0
fi
cat /tmp/putmeback | uniq | sort -n
rm -rf /tmp/putme*
exit 0
- 2579 megtekintés
Hozzászólások
gáz van gizi! valami sed-es problemo. mindjárt megnézem, mi.
--
namegvan. rosszul kopipészteltem. :]
- A hozzászóláshoz be kell jelentkezni
szabad javasolni az mktemp hasznalatat atmeneti fajlok letrehozasahoz?
- A hozzászóláshoz be kell jelentkezni
nekem az rm -rf szúrt szemet, az r nem kell,
meg az, hogy kétszer van a help szövege beírva: használj eljarast,
es meg az is, hogy a helpben a -h el van írva -v -re.
- A hozzászóláshoz be kell jelentkezni
top szerint:
--
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4381 imp 9 0 73136 71m 22m S 0.0 28.7 3:09.72 opera
ezzel szemben ps (es a script szerint is):
--
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
imp 4381 2.1 29.0 311180 74068 tty1 S 17:18 3:11 /usr/lib/opera/9.0-20060310.5/opera -style qtcurve
- A hozzászóláshoz be kell jelentkezni
Javaslom a "man top"-ot... VIRTUAL MEMORY vs. PHYSICAL MEMORY.
- A hozzászóláshoz be kell jelentkezni
Ja, amúgy meg szabadság van, lehet tovább fejleszteni. Ez csak egy kezdő ötlet volt. Beszálltok?
- A hozzászóláshoz be kell jelentkezni
Csak 1 apró megjegyzés, ha angolul tolod a szövegeket akkor a változónevek is lehetnének angolul.
--
Az élet harc. Délelőtt az éhséggel, délután az álmossággal.
- A hozzászóláshoz be kell jelentkezni
Én is hozzászólnék. Nekem is van egy scriptem, ami egy adott
PID memóriahasználatát adja vissza egy fájlba. Arra használom,
hogy prgogramból meghívom, majd a kimenetet visszaolvasva
megtudom, hogy az adott (futó) programmal mi a helyzet
memóriailag (periódikusan hívva: van-e memóriaszivárgás?)
Jó hosszú script (-::
Input: pid
Output: use.mem (file)
#!/bin/sh
# Memory usage for pid (as $1)
cd /meditor/HRS++/script
grep "VmData:" /proc/$1/status | awk '{print $2}' > ./use.mem
#
# end of script
#
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni