内存泄露很难查。

  1、内存有没有泄露?

  2、内存在哪里泄露?

  为了解决第一个问题,吾绞尽脑汁,写了一个脚本,检查特定程序的内存增长。即只要增长就会输出。分享出来供大家参考。

# ps -A | grep ${PROCESS_NAME} | awk '{print $1}'
get_pid()
{process_name=$1text=`ps -A | grep $process_name`# 去掉开头的空格text=`echo $text | sed -e 's/^[ \t]*//g'`#没有这个进程if [ "${text}" = "" ] ; thenpid=0echo ${pid}return 0fi# 得到进程号之后的空格pos=`expr index "$text" " "`pos=`expr $pos - 1`#截取进程号pid=`echo $text | cut -c 1-$pos`#echo pid=---$pid+++echo ${pid}return 0
}# cat /proc/${pid}/status | grep VmRSS | awk '{print $2}'
get_mem()
{process_id=$1text=`cat /proc/${process_id}/status | grep VmRSS`#没有这个进程if [ "${text}" = "" ] ; thenmemory=0echo ${memory}return 0fipos=`expr index "$text" " "`text=`echo $text | cut -c $pos-`pos=`expr index "$text" " "`pos=`expr $pos - 1`memory=`echo $text | cut -c 1-$pos`#echo memory=---$memory+++echo ${memory}return 0
}# 最好是参数传递
PROCESS_NAME="quantum6"# 有人指点,也可以一条命令搞定:
# ps -A | grep ${PROCESS_NAME} | awk '{print $1}'
pid=$(get_pid ${PROCESS_NAME})
#没有这个进程
if [ "${pid}" = "0" ] ; thenmax_memory=0
elsemax_memory=$(get_mem ${pid})
fiecho pid=${pid}, max_mem=${max_memory}# 循环。如果内存增加,输出变化情况。
while [ true ] ; dosleep 1s# 得到进程号pid=$(get_pid $PROCESS_NAME)if [ "${pid}" = "0" ] ; then# 没找到,复位max_memory=0continuefi# 得到进程使用的内存。# cat /proc/${pid}/status | grep VmRSS | awk '{print $2}'current_memory=$(get_mem ${pid})if [ "${current_memory}" = "0" ] ; thencontinuefi# 如果占用内存增加了,输出if [ ${current_memory} -gt ${max_memory} ] ; thenechoecho ---------------------------------datediff=`expr ${current_memory} - ${max_memory}`echo ${current_memory} - ${max_memory} = ${diff}max_memory=${current_memory}fidone

输出如下:

pid=15960, mem=3650724---------------------------------
2019年 01月 07日 星期一 09:34:57 CST
3652832 - 3650724 = 2108
^C[quantum6@gh4ai gh4ai]$ ./check_mem.sh
pid=15960, mem=3650724---------------------------------
2019年 01月 07日 星期一 09:35:32 CST
3651776 - 3650724 = 1052---------------------------------
2019年 01月 07日 星期一 09:35:42 CST
3652832 - 3651776 = 1056

LINUX检查一个进程内存增长的脚本相关推荐

  1. Linux下的进程内存结构

    Linux下的进程内存结构 虚拟内存管理 Linux操作系统采用虚拟内存管理技术,使得每个进程都有独立的地址空间,该地址空间大小为4GB的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际 ...

  2. linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况

    动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...

  3. linux kill一个进程杀不掉怎么解决?

    linux kill一个进程杀不掉是因为这个进程是僵尸进程 僵尸进程和孤儿进程 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号 ...

  4. linux启动一个进程吗,当你在Linux上启动一个进程时会发生什么?

    本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已. 我们要做的是启动一个进程.我们已经在博客上讨论了很多关于系统调用 ...

  5. linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?

    原标题:你知道,当你在 Linux 上启动一个进程时会发生什么嘛? 本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已 ...

  6. linux 检查僵死进程,Linux下杀僵尸进程办法

    Linux认证辅导:Linux下杀僵尸进程办法 为了方便广大考生更好的复习,小编编辑整理提供了Linux认证:Linux下杀僵尸进程办法,以供各位考生考试复习参考,希望对考生复习有所帮助. 1) 检查 ...

  7. linux 查看 特定进程 内存

    Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id 可以看到是2913,现在可以使用如下命令查 ...

  8. linux脚本监控某一进程,linux监控某个进程的运行shell脚本

    该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep - ...

  9. linux kill一个进程,linux kill命令:(中止一个进程)

    1.作用 kill命令用来中止一个进程. 2.格式 kill [ -s signal | -p ] [ -a ] pid - kill -l [ signal ] 3.参数 -s:指定发送的信号. - ...

  10. python内存持续增长_Python 进程内存增长解决方案

    一.表现 运行环境: # uname –a Linux ** 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_ ...

最新文章

  1. paip.文件目录操作uAPI php python java对照
  2. C语言选择排序Selection sort算法(附完整源码)
  3. python字符串库函数_Python标准库概览(1):string
  4. 一个简单的从windows系统往AWS上直接拷贝文件的脚本
  5. 《鸟哥的Linux私房菜--基础篇》学习
  6. mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...
  7. python字典{:4}_升级您的Python技能:检查字典
  8. php wula,PHP老师没教过你的那些知识点
  9. c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10
  10. UVA344 UVALive5452 Roman Digititis【Ad Hoc】
  11. 第三次小组实践作业小组每日进度汇报:2017-12-2
  12. Battery Charging Specification 1.2 中文详解 来源:www.chengxuyuans.com
  13. 几种常用的排序算法详解和C++排序算法模板(附有动图理解)
  14. CWMP(TR069)协议标准学习
  15. Python爬虫-爬取开心网主页(有登录界面-利用cookie)
  16. GoLang之接口interface
  17. java获取请求ip的方法
  18. 织梦dedecms 忘记管理员后台密码的解决技巧
  19. 1400亿改造大明宫遗址区 西安将建城市中央公园
  20. 透过汽车之家二手车业务,看二手车市场的模式终局

热门文章

  1. 用PPT制作 电子相册,进行抽奖准备.
  2. httpclient架构原理介绍 连接池详解
  3. ESL系统的Docker化部署
  4. Chrome插件英雄榜(第二期)
  5. Cookie和Session有什么区别?
  6. Elastic Job 入门
  7. kafka搭建、学习(一)
  8. EventBus框架原理解析(结合源代码)(上)
  9. 第二十四周项目3-动态链表体验
  10. LVS-DR+Ldirectord+FreeNas实现负载均衡群集