码迷,mamicode.com
首页 > 系统相关 > 详细

进程内存监控

时间:2017-04-12 13:15:24      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:padding   span   指定   top   调试   memory   pat   info   not found   

使用脚本监控指定进程内存占用,当进程占用内存超过设置阈值时,生成对应的coredump文件以及使用gdb命令输出进程的全部线程信息,从而保存进程在系统kill前进程信息,方便后续对内存急剧上涨的调试。

#!/bin/bash
#usage: nohup ./memcheck.sh > /dev/null 2>&1 &
#set -x
PROC_NAME="memchk_test"   #进程名称
OUTPUT_PATH="/home/zhoulee/" #输出文件路径
let MEMORY_LIMIT=500000  #内存使用上限 单位:KB
let MONITOR_INTERVAL=5   #监控时间间隔 单位:Sec

while (true)
do
    PID=`ps aux | grep ${PROC_NAME} | grep -v grep | head -n 1 | awk {print $2}`
    if [ ! ${PID} ]; then
        echo "process ${PROC_NAME} not found"
    elif [ ${PID} -gt 0 ]; then
        MEM_USE=`cat /proc/${PID}/status | grep VmRSS | awk {print $2}`
        if [ ${MEM_USE} -gt ${MEMORY_LIMIT} ]; then
            echo "memory high, save process info...."
            TIME_SUFFIX=`date +%Y%m%d-%H%M%S`
            CORE_FILE=${OUTPUT_PATH}${PROC_NAME}"_"${TIME_SUFFIX}"_"${PID}".coredump"
            GDB_FILE=${OUTPUT_PATH}${PROC_NAME}"_"${TIME_SUFFIX}"_"${PID}"_gdb.info"
            gdb -ex "thread apply all bt" -batch -p ${PID} > ${GDB_FILE}
            gcore -o ${CORE_FILE} ${PID}
            break;
        else
            echo "memory ${MEM_USE} KB"
        fi
    fi
    sleep ${MONITOR_INTERVAL}
done

使用方式

nohup ./memcheck.sh > /dev/null 2>&1 &

进程内存监控

标签:padding   span   指定   top   调试   memory   pat   info   not found   

原文地址:http://www.cnblogs.com/zhouLee/p/6698325.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!