大家好,我是梦辛工作室的灵,又有 好长一段时间没有更新了,主要我也没撒好更新了,不过最近终于又知道更新撒了,昨天晚上半夜服务器奔溃,给我整的,恼火的,大半夜起来重启服务器,气的我今天撒也不说,写了一个监听 服务器 运行的脚本,并自动重启的,感觉还不错,放到下面了
#!/bin/bash
# 函数需要提前声明
function doReStartServer() {
restart_now=`date -d "now" +%Y-%m-%d`
echo "$(date "+%Y-%m-%d %H:%M:%S") 开始重启服务器" >> logs/${restart_now}_server.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 开始重启服务器" >> logs/${restart_now}_run.log
PID=`ps -ef | grep $binfile | grep -v grep | awk '{print $2}'`
if [ ${#PID} -gt 0 ]
then
#进程还在。结束进程
echo "$(date "+%Y-%m-%d %H:%M:%S") 关闭服务器" >> logs/${restart_now}_server.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 关闭服务器" >> logs/${restart_now}_run.log
sh ${binfile}bin/shutdown.sh
sleep 30
fi
echo "$(date "+%Y-%m-%d %H:%M:%S") 启动服务器" >> logs/${restart_now}_server.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 启动服务器" >> logs/${restart_now}_run.log
sh ${binfile}bin/startup.sh
sleep 30
echo "$(date "+%Y-%m-%d %H:%M:%S") 检查服务器" >> logs/${restart_now}_server.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 检查服务器" >> logs/${restart_now}_run.log
REPID=`ps -ef | grep $binfile | grep -v grep | awk '{print $2}'`
if [ ${#REPID} -gt 0 ]
then
echo "$(date "+%Y-%m-%d %H:%M:%S") 服务器重启成功" >> logs/${restart_now}_server.log
echo "$(date "+%Y-%m-%d %H:%M:%S") 服务器重启成功" >> logs/${restart_now}_run.log
else
doReStartServer
fi
}
#检查状态
function doCheckServer () {
if [ $1 -eq "200" -o $1 -eq "404" -o $1 -eq "500" ]
then
echo "$(date "+%Y-%m-%d %H:%M:%S") 服务器正常" >> logs/${2}_run.log
else
echo "$(date "+%Y-%m-%d %H:%M:%S") 服务器异常" >> logs/${2}_run.log
doReStartServer
fi
}
#单次访问最长时间
timeout=10
#重复访问几次
retry=3
#多久检查一次(秒)
sleeptime=20
#域名
server="localhost"
#启动文件所在目录
binfile="/home/tomcat/"
#创建日志文件夹
mkdir -p logs
startnow=`date -d "now" +%Y-%m-%d`
echo "$(date "+%Y-%m-%d %H:%M:%S") 程序开始运行" >> logs/${startnow}_start.log
while :
do
now=`date -d "now" +%Y-%m-%d`
#statements
echo "$(date "+%Y-%m-%d %H:%M:%S") 访问$server" >> logs/${now}_run.log
code=`curl -o /dev/null -s -w %{http_code} --max-time $timeout --retry $retry --url $server`
echo "$(date "+%Y-%m-%d %H:%M:%S") 访问结果$code" >> logs/${now}_run.log
doCheckServer $code $now
sleep $sleeptime
done
echo "$(date "+%Y-%m-%d %H:%M:%S") 程序结束运行" >> logs/${startnow}_start.log
把他放在服务器上,然后 ,更改下上面的配置信息,就可以了,目前是 视为 返回 200 500 404 都视为正常情况,其他返回码都视为 异常,
放到服务器上后,输入
cd 文件所在文件夹
chmod +x autocheck.sh
./autocheck.sh &
然后就可以了,可以去跟踪日志文件,示例如下
cd logs
tail -f 今日_run.log