方法比较多,提供一种最简单的:
#!/bin/bash
PROCESS="./a.out" #进程名
MAXMEM=1048576 #最大物理内存阀值,单位KB
ID=`ps -ef | grep "${PROCESS}" | grep -v "grep" | awk '{print $2}'`
if [ ! -n "$ID" ]; then
echo "$PROCESS not exist"
exit 1
fi
MEM=`cat /proc/$ID/status | grep -e VmRSS | awk '{print $2}'`
if [ $MEM -gt $MAXMEM ]; then
#超过了,kill或者restart进程
fi