仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 867|回复: 7
打印 上一主题 下一主题

[shell编程] 给大家带来检察历程内存实在占用情形的剧本

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:17:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!#!/bin/bash
#****************************************************************#
#ScriptName:pm
#Author:osdba
#CreateDate:2010-01-31
#ModifyAuthor:
#ModifyDate:2010-01-31
#Function:showprocessesmemoryused
#***************************************************************#


functiongetpidmem()
{
cat/proc/$1/smaps2>/dev/null|awk/
BEGIN{
total_size=0;
total_rss=0;
total_shared_clean=0;
total_shared_dirty=0;
total_private_clean=0;
total_private_dirty=0;
total_swap=0;

mem_size=0;
mem_rss=0;
mem_shared_clean=0;
mem_shared_dirty=0;
mem_private_clean=0;
mem_private_dirty=0;
mem_swap=0;
}
{
if($1~/^Size:/)
{
mem_size=$2;
}
elseif($1~/^Rss:/)
{
mem_rss=$2;
}
elseif($1~/^Shared_Clean:/)
{
mem_shared_clean=$2;
}
elseif($1~/^Shared_Dirty:/)
{
mem_shared_dirty=$2;
}
elseif($1~/^Private_Clean:/)
{
mem_private_clean=$2;
}
elseif($1~/^Private_Dirty:/)
{
mem_private_dirty=$2;
}
elseif($1~/^Swap:/)
{
mem_swap=$2;
}
else
{
if(ipcmem_start==1)
{
ipc_size=mem_size;
ipc_rss=mem_rss;
ipc_shared_clean=mem_shared_clean;
ipc_shared_dirty=mem_shared_dirty;
ipc_private_clean=mem_private_clean;
ipc_private_dirty=mem_private_dirty;
ipc_swap=mem_swap;
}
else
{
total_size=total_size+mem_size;
total_rss=total_rss+mem_rss;
total_shared_clean=total_shared_clean+mem_shared_clean;
total_shared_dirty=total_shared_dirty+mem_shared_dirty;
total_private_clean=total_private_clean+mem_private_clean;
total_private_dirty=total_private_dirty+mem_private_dirty;
total_swap=total_swap+mem_swap;
};
if($6~/^//SYSV/)
{
ipcmem_start=1;
}
else
{
ipcmem_start=0;
};
};
}
END{
printf("%15d%15d%15d%15d%15d%15d/n",total_rss,total_private_clean,total_private_dirty,total_shared_clean,total_shared_dirty,total_swap);
}

}

functionshow_all_process_mem()
{
TMPFILE=`/bin/mktemp-q`
echo"pidRSS(KB)PRIV_DIRTYPRIV_CLEANSHR_DIRTYSHR_CLEANSWAPPAGETABLECMDLINE"
echo"-----------------------------------------------------------------------------------------------"
ls-ld/proc/[0-9]*|awk{printf("%s/n",$NF)}>$TMPFILE
whilereadLINE
do
PID=`basename$LINE`
cmdline=`ps-ocommand-p$PID|tail-1|cut-b1-26`
pagetablesize=`cat/proc/$PID/status|grep"VmPTE:"|awk{print$2}`
if["$pagetablesize"=""];then
pagetablesize=0
fi

meminfoline=`getpidmem$PID`
rss=`echo$meminfoline|awk{print$1}`
private_clean=`echo$meminfoline|awk{print$2}`
private_dirty=`echo$meminfoline|awk{print$3}`
shared_dirty=`echo$meminfoline|awk{print$4}`
shared_clean=`echo$meminfoline|awk{print$5}`
swap=`echo$meminfoline|awk{print$6}`
total_rss=$((total_rss+rss))
total_private_clean=$((total_private_clean+private_clean))
total_private_dirty=$((total_private_dirty+private_dirty))
total_shared_dirty=$((total_shared_dirty+shared_dirty))
total_shared_clean=$((total_rss+shared_clean))
total_swap=$((total_swap+swap))
total_pagetablesize=$((total_pagetablesize+pagetablesize))
if["$1"="-a"];then
echo$PID$meminfoline"$pagetablesize""$cmdline"|awk/
{
printf("%9d%10d%10d%10d%10d%10d%10d%10d%-26s/n",$1,$2,$3,$4,$5,$6,$7,$8,$9);
}
fi
done<$TMPFILE
/bin/rm$TMPFILE

echo$total_rss$total_private_clean$total_private_dirty$total_shared_dirty$total_shared_clean$total_swap$total_pagetablesize|awk/
{
printf("ALL%10d%10d%10d%10d%10d%10d%10d/n",$1,$2,$3,$4,$5,$6,$7);
}
}


functionprint_usage()
{
echo"usage:"
echo"pm.sh-a:displayallprocessmemoryinfo"
echo"pm.sh-s:displaytotalmemoryinfo"
echo"pm.sh-p<pid>:displaypidmemoryinfo"
}

total_rss=0
total_private_clean=0
total_private_dirty=0
total_shared_dirty=0
total_shared_clean=0
total_swap=0
total_pagetablesize=0

if[$#-lt1];then
print_usage;
exit1
fi

if["$1"="-a"];then
show_all_process_mem$1;
exit0
fi
if["$1"="-s"];then
show_all_process_mem$1;
exit0
fi

if["$1"="-p"];then
if[$#-ne2];then
print_usage;
exit1
fi

meminfoline=`getpidmem$2`
cmdline=`ps-ocommand-p$2|tail-1|cut-b1-26`
pagetablesize=`cat/proc/$2/status|grep"VmPTE:"|awk{print$2}`
if["$pagetablesize"=""];then
pagetablesize=0
fi

echo"pidRSS(KB)PRIV_DIRTYPRIV_CLEANSHR_DIRTYSHR_CLEANSWAPPAGETABLECMDLINE"
echo"-----------------------------------------------------------------------------------------------"
echo$2$meminfoline"$pagetablesize""$cmdline"|awk/
{
printf("%9d%10d%10d%10d%10d%10d%10d%10d%-26s/n",$1,$2,$3,$4,$5,$6,$7,$8,$9);
}
exit0
fi
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
不帅 该用户已被删除
沙发
发表于 2015-1-15 15:51:42 | 只看该作者

给大家带来检察历程内存实在占用情形的剧本

嗯,以前我也有这么一辆破车~
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-25 20:43:59 | 只看该作者
要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
莫相离 该用户已被删除
地板
发表于 2015-2-4 12:37:40 | 只看该作者
如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。
兰色精灵 该用户已被删除
5#
发表于 2015-2-9 22:39:57 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-28 06:53:47 | 只看该作者
这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。
海妖 该用户已被删除
7#
发表于 2015-3-10 01:41:11 | 只看该作者
Windows有MS-DOS?方式,在该方式下通过输入DOS命令来操作电脑;Linux与Windows类似,也有命令方式,Linux?启动后如果不执行?X-WINDOWS,就会处于命令方式下,必须发命令才能操作电脑。?
柔情似水 该用户已被删除
8#
发表于 2015-3-24 05:50:33 | 只看该作者
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-1 17:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表