• HOME
  • DOCS
  • WTF
  • TECH
  • LIFE
  • PAGES
    • ARCHIVE
    • TAGS
    • ABOUT
    • FRIENDS
    • RSS
  • TOOLS
    • GEO
    • RANDOM()
    • GOO.GL
    • CSS HEART
Aj's Blog

记录时间溜走的瞬间和折腾过的那些事

CentOS VPS定时检测剩余内存、系统负载重启服务脚本
2012-11-27 @ TECH CentOScrontabfree -mlnmpvps

一、CentOS VPS 定时检测剩余内存、系统负载

以下脚本适用于lnmp,如果你用的其他管理系统,修改下面的restart部分即可。

#可用内存限额(单位:MB)
FREE_MEM_MIN="100"

#当前可用内存(单位:MB)
FREE_MEM=`free -m|grep Mem|awk '{print $4}'`

#系统最近一分钟负载
SYS_LOAD=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`

#当前可以用内存是否太低
MEM_VULE=`awk 'BEGIN{print('"$FREE_MEM"'<'"$FREE_MEM_MIN"'?"1":"0")}'`

if [ $MEM_VULE = 1 ]
then
  #调用lnmp管理程序重启lnmp服务
  echo $(date +"%y-%m-%d %H:%M:%S") "Restart." " ( FREE_MEM: $FREE_MEM, LOAD: $SYS_LOAD )" >> /var/log/memchk.log
  /usr/local/lnmp0.9/lnmp restart
else
  #一切正常
  echo "System OK! ( FREE_MEM: $FREE_MEM, LOAD: $SYS_LOAD )" >> /var/log/memchk.log
fi

二、系统自动执行检查

执行 crontab -e ,把上述文件 加入执行任务列表

crontab 任务命令书写格式,参考文档: http://www.qzz.in/?post=208

格式: 分钟 小时 日 月 周几 命令

范围: 0-59 0~23 1~31 1~12 0~7,0和7都代表周日

在crontab中我们会经常用到* , – /n 这4个符号:

符号 解释
*(星号) 代表所有有效的值。 如:0 23 * * * backup 不论几月几日周几的23点整都执行backup命令。
,(逗号) 代表分割开多个值。 如:30 9 1,16,20 * * command 每月的1、16、20号9点30分执行command命令。
-(减号) 代表一段时间范围。 如:0 9-17 * * * checkmail 每天9点到17点的整点执行checkmail命令
/n 代表每隔n长时间。 如:*/5 * * * * check 每隔5分钟执行一次check命令,与0-59/5一样。

下面举一些例子来加深理解:

每天凌晨3:00执行备份程序:0 3 * * * /root/backup.sh
每周日8点30分执行日志清理程序:30 8 * * 7 /root/clear.sh
每周1周5 0点整执行test程序:0 0 * * 1,5 test
每年的5月12日14点执行wenchuan程序:0 14 12 5 * /root/wenchuan
每晚18点到23点每15分钟重启一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm

下一篇:   什么是YAML?YAML的用途
上一篇:   深入理解VBScript
暂无评论

Cancel reply