• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > Shell脚本查看进程内存真实占用情况

Shell脚本查看进程内存真实占用情况

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了shell脚本,shell脚本编程,shell脚本学习指南,shell脚本实例,linux shell脚本等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

#!/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

您可能想查找下面的文章:

  • Shell脚本监控目录内文件改动
  • 实现自动清除日期目录shell脚本实例代码
  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • shell脚本连接并重启远程服务器的方法
  • shell 脚本安装PHP扩展的简单方法
  • Linux shell脚本输出日志笔记整理(必看篇)
  • shell脚本实现分日志级别输出的方法
  • shell将脚本输出结果记录到日志文件的实现
  • 输出执行操作和打印日志的shell脚本实例
  • shell脚本 自动创建用户详解及实例代码

相关文章

  • 批量转换目录下文件编码的shell脚本代码
  • shell实现四则运算简单方法
  • linux shell进度条实现方法
  • 浅谈ctrl+c,ctrl+d,ctrl+z在linux中的意义
  • shell脚本nicenumber实现代码
  • Shell脚本实现批量下载网络图片代码分享
  • linux shell字符串内置的常用操作(获取长度、查找、替换)
  • 用shell脚本和c语言将大写字母转成小写的代码
  • linux服务器安全加固shell脚本代码
  • Bash Shell脚本学习小结

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Linux内核链表实现过程
    • Shell创建用户并生成随机密码脚本分享
    • 获取shell脚本自身所在目录的Shell脚本分享
    • Shell时间运算及时间差计算方法
    • shell脚本实现输入密码显示星号
    • Git 常用命令整理
    • bash脚本输入密码不回显问题的解决方法
    • shell监控脚本 准备工作分享
    • linux 驱动之Kconfig文件和Makefile文件实例
    • Shell脚本实现IP地址合法性判断

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有