我在互联网上搜索了很多,但不知何故没什么作用。我有一个名为myApp
的应用程序,我想在离散的时间点显示此应用程序的内存使用情况。我需要......像这样:
#!/bin/bash
for((i=0;i<=20;++i))
do
... check memory usage here
sleep 3
done
由于找不到命令,我无法使用pidof
。直到现在,我得到了这个:
#!/bin/bash
PROCESSNAME=myApp
MYPID=`pgrep -f $PROCESSNAME`
echo "=======";
echo PID:$MYPID
echo "--------"
Rss=`echo 0 $(cat /proc/$MYPID/smaps | grep Rss | awk '{print $2}' | sed 's#^#+#') | bc;`
Shared=`echo 0 $(cat /proc/$MYPID/smaps | grep Shared | awk '{print $2}' | sed 's#^#+#') | bc;`
Private=`echo 0 $(cat /proc/$MYPID/smaps | grep Private | awk '{print $2}' | sed 's#^#+#') | bc;`
Swap=`echo 0 $(cat /proc/$MYPID/smaps | grep Swap | awk '{print $2}' | sed 's#^#+#') | bc;`
Pss=`echo 0 $(cat /proc/$MYPID/smaps | grep Pss | awk '{print $2}' | sed 's#^#+#') | bc;`
Mem=`echo "$Rss + $Shared + $Private + $Swap + $Pss"|bc -l`
echo "Rss " $Rss
echo "Shared " $Shared
echo "Private " $Private
echo "Swap " $Swap
echo "Pss " $Pss
echo "=================";
echo "Mem " $Mem
echo "=================";
我从NetBeans中调用此myApp
(它是一个C ++程序)。不幸的是,pgrep -f myApp
返回两个PID,所以在我的脚本中没有任何作用。实际上,我对bash-scripts几乎一无所知,因此不知道现在要做什么。
另一个问题:看看Linux的“系统监视器”,“Memory”列给了我这里除了这个脚本以外的其他值。你能告诉我为什么吗?哪种类型(Rss,Shared,...)等于“系统监视器”的“内存”列?