全球主机交流论坛
标题:
我的监控脚本,写的垃圾请大家不要笑我~~~
[打印本页]
作者:
webproxy
时间:
2011-12-27 22:25
标题:
我的监控脚本,写的垃圾请大家不要笑我~~~
最好不要用于监控有同名子进程的程序,侦测的值会比实际的值大~~~
#!/bin/sh
PROCESS_NAME=$1
CPU_MAX_USERATE=$2
MEM_MAX=$3
#MEM_MAX_USERATE=$3
CYCLE=$4
MAX_EXCEED_SET_NUMBER=$5
MAX_RESTART_NUMBER=$6
CPU_MAX_USERATE_I=0
MEM_MAX_USERATE_I=0
MEM_MAX_I=0
MAX_RESTART_NUMBER_I=0
while true; do
MEM_USERATE=`ps -C $PROCESS_NAME -o %mem | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
CPU_USERATE=`ps -C $PROCESS_NAME -o %cpu | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
MEM=`ps -C $PROCESS_NAME -o rss | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
((MEM=MEM/1024))
if (echo $MEM 0.1 $MAX_RESTART_NUMBER_I | awk '!(($1 >= $2) && ($3 >= 1)){exit 1}') then
MAX_RESTART_NUMBER_I=0
#echo $(date) $PROCESS_NAME' already strat' >> /log/$PROCESS_NAME.log
fi
if (echo $CPU_USERATE $MEM_USERATE $MEM | awk '!(($1 == 0) || ($2 == 0) || ($3 == 0)){exit 1}') then
# Program is not start or already shut down
# restart or start code
echo 'restart '$PROCESS_NAME
/sbin/service $PROCESS_NAME restart
#echo $(date) $PROCESS_NAME' restart' >> /log/$PROCESS_NAME.log
CPU_MAX_USERATE_I=0; MEM_MAX_USERATE_I=0; MEM_MAX_I=0;
((MAX_RESTART_NUMBER_I=MAX_RESTART_NUMBER_I+1))
sleep 10
fi
if (echo $CPU_USERATE $CPU_MAX_USERATE | awk '!($1 >= $2){exit 1}') then
((CPU_MAX_USERATE_I=CPU_MAX_USERATE_I+1))
echo 'CPU_MAX_USERATE_I='$CPU_MAX_USERATE_I 'CPU_USERATE='$CPU_USERATE
fi
# if (echo $MEM_USERATE $MEM_MAX_USERATE | awk '!($1 >= $2){exit 1}') then
# ((MEM_MAX_USERATE_I=MEM_MAX_USERATE_I+1))
# echo 'MEM_MAX_USERATE_I='$MEM_MAX_USERATE_I 'MEM_USERATE='$MEM_USERATE
# fi
if (echo $MEM $MEM_MAX | awk '!($1 >= $2){exit 1}') then
((MEM_MAX_I=MEM_MAX_I+1))
echo 'MEM_MAX_I='$MEM_MAX_I 'MEM='$MEM'MB'
fi
if (echo $CPU_MAX_USERATE_I $MEM_MAX_USERATE_I $MEM_MAX_I $MAX_EXCEED_SET_NUMBER | awk '!(($1 >= $4) || ($2 >= $4) || ($3 >= $4)){exit 1}') then
echo 'restart '$PROCESS_NAME
/sbin/service $PROCESS_NAME restart
#echo $(date) $PROCESS_NAME' restart' >> /log/$PROCESS_NAME.log
CPU_MAX_USERATE_I=0; MEM_MAX_USERATE_I=0; MEM_MAX_I=0;
((MAX_RESTART_NUMBER_I=MAX_RESTART_NUMBER_I+1))
sleep 10
fi
if (echo $MAX_RESTART_NUMBER_I $MAX_RESTART_NUMBER | awk '!($1 >= $2){exit 1}') then
# Send mail code
#echo $(date) $PROCESS_NAME' gua le!!!' | /usr/sbin/sendmail -v your @xxx.com > /dev/null
#echo $(date) $PROCESS_NAME' gua le!!!' >> /log/$PROCESS_NAME.log
break 1
fi
sleep $CYCLE
done
exit
# ./test.sh lighttpd 30 900 5 5 5
# ./test.sh 进程名 最大使用CPU百分比 最大使用内存数(MB) 侦测周期(秒) 超过设置多少个周期后重起服务 尝试重起服务失败多少次后发邮件
复制代码
作者:
zzzu
时间:
2011-12-27 22:26
支持
作者:
xiaoota
时间:
2011-12-27 22:27
看不懂的表示路过~~~~~~~~
作者:
小陈
时间:
2011-12-27 22:27
虽然看不懂,不过贵在贴够长
作者:
wusir
时间:
2011-12-27 22:37
慢慢看
作者:
哈P哥
时间:
2011-12-27 22:38
楼主不可妄自菲薄,只要是技术贴,大家都支持你
作者:
店小二
时间:
2011-12-27 22:38
不懂 顶字多
作者:
webproxy
时间:
2011-12-27 22:39
哪位老大测试下,看看好用不???
作者:
小夜
时间:
2011-12-27 22:41
技术贴,一定要支持。
作者:
完美
时间:
2011-12-28 00:43
赞一个
作者:
西崽猪猪
时间:
2011-12-28 00:46
比我强。。。。。我还不会写
作者:
atrong
时间:
2011-12-28 02:03
看不懂
作者:
fsd1
时间:
2011-12-28 10:15
提示:
作者被禁止或删除 内容自动屏蔽
作者:
ali727
时间:
2011-12-28 10:17
我是来笑楼主的。
作者:
悟雨
时间:
2011-12-28 10:49
mark
作者:
恢复自我
时间:
2011-12-28 10:58
不懂技术的路过
作者:
zyzit
时间:
2011-12-28 10:59
都是技术类人才啊
作者:
小懒猪
时间:
2011-12-28 11:02
看不懂的依然在路过
欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/)
Powered by Discuz! X3.4