展会信息港展会大全

查看进程内存真实占用情况的脚本
来源:互联网   发布日期:2015-08-20 21:03:56   浏览:1152次  

导读: #!/bin/bash #****************************************************************# # ScriptName: pm # Author: osdba # Create Date: 2010-01-31 # Modify Author: # Modify Date: 2010-01-31 # Function: show processes memory used #******************...

#!/bin/bash#****************************************************************## ScriptName: pm# Author: osdba# Create Date: 2010-01-31# Modify Author:# Modify Date: 2010-01-31# Function: show processes memory used#***************************************************************#function getpidmem(){cat /proc/$$1/smaps 2>/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; } else if($$1 ~ /^Rss:/) { mem_rss=$$2; } else if($$1 ~ /^Shared_Clean:/) { mem_shared_clean=$$2; } else if($$1 ~ /^Shared_Dirty:/) { mem_shared_dirty=$$2; } else if($$1 ~ /^Private_Clean:/) { mem_private_clean=$$2; } else if($$1 ~ /^Private_Dirty:/) { mem_private_dirty=$$2; } else if($$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);}'}function show_all_process_mem(){ TMPFILE=`/bin/mktemp -q` echo " pid RSS(KB) PRIV_DIRTY PRIV_CLEAN SHR_DIRTY SHR_CLEAN SWAP PAGETABLE CMDLINE" echo "--------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------------" ls -ld /proc/[0-9]* |awk '{printf("%s/n",$$NF)}' > $$TMPFILE while read LINE do PID=`basename $$LINE` cmdline=`ps -o command -p $$PID |tail -1 |cut -b 1-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); }'}function print_usage(){ echo "usage:" echo " pm.sh -a : display all process memory info" echo " pm.sh -s : display total memory info" echo " pm.sh -p <pid> : display pid memory info"}total_rss=0total_private_clean=0total_private_dirty=0total_shared_dirty=0total_shared_clean=0total_swap=0total_pagetablesize=0if [ $$# -lt 1 ];then print_usage; exit 1fiif [ "$$1" = "-a" ];then show_all_process_mem $$1; exit 0fiif [ "$$1" = "-s" ];then show_all_process_mem $$1; exit 0fiif [ "$$1" = "-p" ];then if [ $$# -ne 2 ];then print_usage; exit 1 fi meminfoline=`getpidmem $$2` cmdline=`ps -o command -p $$2 |tail -1 |cut -b 1-26` pagetablesize=`cat /proc/$$2/status |grep "VmPTE:"|awk '{print $$2}'` if [ "$$pagetablesize" = "" ]; then pagetablesize=0 fi echo " pid RSS(KB) PRIV_DIRTY PRIV_CLEAN SHR_DIRTY SHR_CLEAN SWAP PAGETABLE CMDLINE" 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); }' exit 0fi

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港