最近一段时间,Linux服务器中的一个重要网站的数据库总是奔溃,导致网站无法正常访问(显示为网站正在维护中),于是就决定写个脚本来自动监控这个网站是否正常,如果发现网站宕机,则自动重启数据库和网站。
解决以上问题的思路如下:
- 用命令行浏览器(lynx)获取网站首页并存储到一个网页文件(WebIndex.htm);
- 如果发现这个网页文件(WebIndex.htm)小于某个字节大小,就可以判断目前网站首页显示的是(正在维护中),即网站此时已经不能正常访问了;
- 调用重启数据库命令(service mysqld restart)和重启网站服务命令(apachectl restart)
主脚本(WebHalt2ReMySQL.sh)
#!/bin/bash
######################################
## ##
## Web_Halt_To_Re_MySQL ##
## ##
## Ver:0.0.1 ##
## ##
## Code:Zhojie ##
## ##
## Date:2017.8 ##
## ##
######################################
WORK_PATH="/Run/Bash/WebHalt2ReMySQL"
LYNX_COMMAND="/usr/bin/lynx"
HtmFilePath=$WORK_PATH"/WebIndex.htm"
HtmFileSize=6000
WebURL="http://sie.whu.edu.cn"
LOG_FILE_PATH=$WORK_PATH"/LogFile.txt"
if [ -f "$HtmFilePath" ]
then
cd $WORK_PATH
rm $HtmFilePath -f
fi
cd $WORK_PATH
$LYNX_COMMAND -dump $WebURL >> $HtmFilePath
HtmFileNum=`ls -al $HtmFilePath|awk '{print $5}'`
if [ $HtmFileNum -lt $HtmFileSize ]
then
echo "">>$LOG_FILE_PATH
echo "======== Found Web Service Error , Start Work ========">>$LOG_FILE_PATH
NowTime=`date +%Y-%m-%d_%H:%M:%S`
echo "["$NowTime"] WebIndexFile("$HtmFilePath") Size ("$HtmFileNum" < "$HtmFileSize")">>$LOG_FILE_PATH
service mysqld restart
sleep 10
apachectl restart
if [ -f "$HtmFilePath" ]
then
cd $WORK_PATH
rm $HtmFilePath -f
fi
$LYNX_COMMAND -dump $WebURL >> $HtmFilePath
HtmFileNum=`ls -al $HtmFilePath|awk '{print $5}'`
NowTime=`date +%Y-%m-%d_%H:%M:%S`
echo "["$NowTime"] WebIndexFile("$HtmFilePath") Now Size ("$HtmFileNum")">>$LOG_FILE_PATH
echo "======== Work End !!! (ZhoJie@Gmail.Com) ========">>$LOG_FILE_PATH
echo "">>$LOG_FILE_PATH
fi
exit 0
网友评论