一、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
暂无评论