存储应用程序内存使用情况的脚本

时间:2016-12-21 11:06:07

标签: linux bash memory

我在互联网上搜索了很多,但不知何故没什么作用。我有一个名为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,...)等于“系统监视器”的“内存”列?

0 个答案:

没有答案