#!/bin/bash
if [ $# -lt 2 ]; then
echo "example:bash insertHeader.sh <list> <dir>"
echo " bash insertHeader.sh <insert> <dir>"
echo " bash insertHeader.sh <delete> <dir>"
exit 1
fi
flag=$1
insertDir=$2
##grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' src/Beast -r | grep -v "free software\|*\|//" | awk -F ":" '{print $1}' | uniq | grep "\.cc\|\.cpp\|\.c\|\.h"
#filelist=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $insertDir -r | grep -v "free software\|*\|//" | awk -F ":" '{print $1}' | uniq | egrep "\.c{1,2}$|\.cpp$"`
filelist=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $insertDir -r | grep -v "free software\|*\|//" | awk -F ":" '{print $1}' | uniq | egrep "\.h{1,2}$|\.hpp$"`
##egrep "\.c{1,2}$|\.cpp$|\.h{1,2}$|\.hpp$"`
if [ "X$flag" = "Xlist" ];then
##filelist=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $insertDir -r | grep -v "free software" | grep -v "sage@newdream.net" | awk -F ":" '{print $1}' | uniq | grep "\.cc\|\.h\|\.cpp\|\.c"`
count=0;
for var in ${filelist[@]};do
lastno=`grep -rin "^#include" $var | sed -n '$p' | awk -F ":" '{print $1}'`
echo "$var $lastno"
if [ $lastno ];then
((count=count+1));
fi
##echo $var
done
echo $count
elif [ "X$flag" = "Xinsert" ];then
##filelist=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $insertDir -r | grep -v "free software" | grep -v "sage@newdream.net" | awk -F ":" '{print $1}' | uniq | grep "\.cc\|\.h\|\.cpp\|\.c"`
count=0;
for var in ${filelist[@]};do
lastno=`grep -rin "^#include" $var | sed -n '$p' | awk -F ":" '{print $1}'`
echo "$var $lastno"
##sed -i "N;${lastno}a#include \"include/mem_statistics_ext.h\"" $var
if [ $lastno ];then
((count=count+1));
sed -i "${lastno}a #include \"include/mem_statistics_ext.h\"" $var
fi
done
echo $count
elif [ "X$flag" = "Xdelete" ];then
##filelist=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $insertDir -r | grep -v "free software" | grep -v "sage@newdream.net" | awk -F ":" '{print $1}' | uniq | grep "\.cc\|\.h\|\.cpp\|\.c"`
count=0;
for var in ${filelist[@]};do
((count=count+1));
includeNo=`grep -rni '^#include \"include\/mem_statistics_ext.h\"' $var | sed -n '$p' | awk -F ":" '{print $1}'`
sed -i "/^#include \"include\/mem_statistics_ext.h\"/d" $var
echo "$var $includeNo"
done
echo $count
fi
==============列出符合要求的文件个数,批量执行命令=========================
#!/bin/bash
if [ $# -ne 2 ]; then
echo "example:bash listNeedUpdate.sh <list,insert,delete> <dir>"
exit 1
fi
flag=$1
dir=$2
dirlist=`ls -F $dir | grep '\/$' | grep -v boost`
DO_WORK="insertHeader.sh"
for var in ${dirlist[@]};do
##echo $dir$var
#num=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $dir$var -r | grep -v "free software\|*\|//" | awk -F ":" '{print $1}' | uniq | grep "\.cc\|\.cpp\|\.c" | wc -l`
num=`grep -w 'malloc\|realloc\|calloc\|posix_memalign\|memalign\|free\|new\|delete' $dir$var -r | grep -v "free software\|*\|//" | awk -F ":" '{print $1}' | uniq | grep "\.h\|\.hh\|\.hpp" | wc -l`
echo "$dir$var $num"
#./${DO_WORK} $flag $dir$var
done
==============批量执行命令打印内存=========================
#!/bin/bash -e
#set -e
#cd `dirname $0`
#free > memory_info.txt
#ps aux --sort=-rss | sed "1d" | head -n 4 | sed -n "2,1p" | awk '{print $2}'
#if [ $# -ne 1 ] ; then
if [ $# -lt 1 ] ; then
echo "print_memory.sh <num> [process]"
echo " ex.: print_memory.sh 4 ; it will print top 4 process."
echo " ex.: print_memory.sh 4 ceph-osd ; it will print top 4 of process name include 'ceph-osd'."
exit 1
fi
topNum=$1
process=$2
#ps aux --sort=-rss | grep $process | grep -v '/bin/sh' | grep -v '/bin/bash' | grep -v grep
#ps aux --sort=-rss | grep $process | grep -v '/bin/sh|/bin/bash|grep'
#if [ $process ] ; then
# echo $process
#fi
#headNo=$((topNum+1))
#echo $topNum$headNo
#pause
(
free ;
echo -e "\nall process mem:" ; ps aux | sed "1d" | awk -F " " '{sum+=$6}; END{print sum}' ;
echo -e "\ntop $topNum:" ; ps aux --sort=-rss | head -n $((topNum+1))
#4打印每个进程的详细内存占用
echo -e "\ntop $topNum process mem:" ;
pidlist=`ps aux --sort=-rss | sed "1d" | head -n $topNum | awk '{print $2}'`
if [ $process ] ; then
#ps aux --sort=-rss | grep $process | grep Ssl | head -n $topNum
#ps aux --sort=-rss | grep $process | grep -v '/bin/sh|/bin/bash|grep'
#ps aux --sort=-rss | grep $process | grep -v '/bin/sh' | grep -v '/bin/bash' | grep -v grep
pidlist=`ps aux --sort=-rss | grep $process | grep -v '/bin/sh' | grep -v '/bin/bash' | grep -v grep | head -n $topNum | awk '{print $2}'`
fi
for pid in ${pidlist[@]};do
echo -e " PID $pid"
#cat /proc/483602/status | grep -E 'VmSize|VmRSS|VmStk|VmData|VmExe|VmLib'
cat /proc/$pid/status | grep "VmSize" | sed "s/VmRSS/TotalVm/g"
cat /proc/$pid/status | grep "VmRSS" | sed "s/VmRSS/CurRss/g"
cat /proc/$pid/status | grep "VmStk" | sed "s/VmStk/stack/g"
cat /proc/$pid/status | grep "VmData" | sed "s/VmData/heap/g"
cat /proc/$pid/status | grep "VmExe" | sed "s/VmExe/code/g"
cat /proc/$pid/status | grep "VmLib" | sed "s/VmLib/lib/g"
libsize=`cat /proc/$pid/status | grep "^VmLib" | awk -F " " '{print $1}'`
done
) > memory_info.txt