【Shell】进程内存过高告警脚本

说明

由于应用内存过高会导致应用异常,所以特写当前的脚本验证。而内存过高可能由以前的原因导致:

  • 内存泄漏 :程序中存在内存泄漏问题,导致内存无法正常释放,最终使服务器内存被占满。
  • 内存碎片:服务器在运行过程中,频繁地申请和释放内存会导致内存碎片,从而导致内存使用效率降低。
  • 不足的内存 :假如服务器内存容量不足,当用户数量较大或者访问量过大时,就很难满足业务需求,导致内存使用异常问题。

脚本

#!/bin/bash

cd `dirname $0`

hostname=$(hostname)
ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|grep -E "10|192" |awk '{print $2}')

processName=$2
thredhold=$3

PIDS=`ps -ef | grep "$processName" | grep -v grep | awk '{print $2}'`

if [ -n "$PIDS" ]; then
    for PID in $PIDS; do
	MEM=`top -n 1 -c | grep ${PID} | awk '{print $6 }'`
        MEM=${MEM%?}
        MEM=$(printf "%.0f" ${MEM})
        thredhold=$(printf "%.0f" ${thredhold})
        echo "${PID}=${MEM}"
        if [[ ${MEM} -gt ${thredhold} ]]; then
            # 发送告警信息
        fi
	done
fi

你可能感兴趣的:(运维,Linux,bat,服务器,linux,运维)