Linux下Mysql连接或执行超时时,重启DB服务器


#!/bin/sh
set -x 
TIMESTAMP=`date +%Y%m` 
LOG=/opt/batch/log/mysqlRestart_${TIMESTAMP}.log 
echo "Start execut at `date`." >>${LOG}
# execute sql stat 
timeout()  
{  
waitfor=30
command=$*  
$command &  
commandpid=$!  
( sleep $waitfor ; kill -9 $commandpid  > /dev/null 2>&1 && restartMysql ) &  
watchdog=$!  
sleeppid=$PPID  
wait $commandpid > /dev/null 2>&1  
kill $sleeppid > /dev/null 2>&1  
}  
selectsql()
{ 
cmd="select count(*) from USER"
cnt=$(mysql -h192.168.1.40 -P3306 -uroot -p123456 -s -e "${cmd}") 
result=$?
echo "${result}" >>${LOG}
if [[ ${result} = 1 ]];then
 restartMysql
else
 echo "${cnt}" >>${LOG}
fi
}
restartMysql(){
service mysqld restart
echo "Mysql restart done." >>${LOG}
}
timeout selectsql
echo "End execut at `date`." >>${LOG}
exit;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值