LINUX检查一个进程内存增长的脚本
内存泄露很难查。
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检查一个进程内存增长的脚本相关推荐
- Linux下的进程内存结构
Linux下的进程内存结构 虚拟内存管理 Linux操作系统采用虚拟内存管理技术,使得每个进程都有独立的地址空间,该地址空间大小为4GB的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际 ...
- linux查看进程的内存使用情况,[转]linux下查看进程内存使用情况
动态查看一个进程的内存使用 1.top命令 top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift + ...
- linux kill一个进程杀不掉怎么解决?
linux kill一个进程杀不掉是因为这个进程是僵尸进程 僵尸进程和孤儿进程 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号 ...
- linux启动一个进程吗,当你在Linux上启动一个进程时会发生什么?
本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已. 我们要做的是启动一个进程.我们已经在博客上讨论了很多关于系统调用 ...
- linux启动一个进程吗,你知道,当你在 Linux 上启动一个进程时会发生什么嘛?
原标题:你知道,当你在 Linux 上启动一个进程时会发生什么嘛? 本文是关于 fork 和 exec 是如何在 Unix 上工作的.你或许已经知道,也有人还不知道.几年前当我了解到这些时,我惊叹不已 ...
- linux 检查僵死进程,Linux下杀僵尸进程办法
Linux认证辅导:Linux下杀僵尸进程办法 为了方便广大考生更好的复习,小编编辑整理提供了Linux认证:Linux下杀僵尸进程办法,以供各位考生考试复习参考,希望对考生复习有所帮助. 1) 检查 ...
- linux 查看 特定进程 内存
Linux下查看某一个进程所占用的内存,首先可以通过ps命令找到进程id,比如 ps -ef | grep kafka 可以看到kafka这个程序的进程id 可以看到是2913,现在可以使用如下命令查 ...
- linux脚本监控某一进程,linux监控某个进程的运行shell脚本
该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep - ...
- linux kill一个进程,linux kill命令:(中止一个进程)
1.作用 kill命令用来中止一个进程. 2.格式 kill [ -s signal | -p ] [ -a ] pid - kill -l [ signal ] 3.参数 -s:指定发送的信号. - ...
- 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_ ...
最新文章
- paip.文件目录操作uAPI php python java对照
- C语言选择排序Selection sort算法(附完整源码)
- python字符串库函数_Python标准库概览(1):string
- 一个简单的从windows系统往AWS上直接拷贝文件的脚本
- 《鸟哥的Linux私房菜--基础篇》学习
- mysql 需要什么硬件配置_如何来给指定的硬件环境配置一份比较合理的MySQL配置文件-爱可生...
- python字典{:4}_升级您的Python技能:检查字典
- php wula,PHP老师没教过你的那些知识点
- c语言与64位windows不兼容_微软发布可模拟 64 位 x86 程序的 ARM 版 Windows 10
- UVA344 UVALive5452 Roman Digititis【Ad Hoc】
- 第三次小组实践作业小组每日进度汇报:2017-12-2
- Battery Charging Specification 1.2 中文详解 来源:www.chengxuyuans.com
- 几种常用的排序算法详解和C++排序算法模板(附有动图理解)
- CWMP(TR069)协议标准学习
- Python爬虫-爬取开心网主页(有登录界面-利用cookie)
- GoLang之接口interface
- java获取请求ip的方法
- 织梦dedecms 忘记管理员后台密码的解决技巧
- 1400亿改造大明宫遗址区 西安将建城市中央公园
- 透过汽车之家二手车业务,看二手车市场的模式终局