监控服务状态并一键重启脚本

 需求:因服务宕,或者服务未启,导致业务出问题,现编写以下脚本,放到各个服务器上,设置定时任务crontab(亦可使用while循环实现,但本脚本未使用)。

 

脚本如下:

#!/bin/bash  

CheckProcess()  
{  
  if [ $1 = "" ];then  
        return 1 
  else
        PROCESS_NUM=$(ps -ef |  grep $1 | grep -v grep|grep -v reload.sh | wc -l)
        if [ $PROCESS_NUM -eq 0 ];then
                return 1
        else
                return 0
        fi
  fi
} 
##################################

mysql()
{
CheckProcess mysql
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
    /etc/init.d/mysql stop
    /etc/init.d/mysql start
 fi
}
##################################
nginx()
{ 
CheckProcess nginx
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
/usr/local/nginx/sbin/nginx –s stop
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
fi
}
################################
zabbix_agentd()
{
CheckProcess zabbix_agentd
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
        /smp/zabbix_proxy/sbin/zabbix_agentd -c /smp/zabbix_proxy/etc/zabbix_agentd.conf
fi
}
##################################
karaf()
{
CheckProcess karaf
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
        sh /smp/karaf_proxy/bin/start
fi
}
#################################
keepalived()
{
CheckProcess keepalived
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
         /etc/init.d/keepalived stop
         /etc/init.d/keepalived start
fi
}
#################################
redis()
{
CheckProcess redis
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
ps –ef | grep redis| grep -v grep |awk '{print $2}'|xargs kill 9 

        /usr/local/redis/src/redis-server /etc/redis/redis9081.conf
        /usr/local/redis/src/redis-server /etc/redis/redis9082.conf
        /usr/local/redis/src/redis-server /etc/redis/redis9083.conf
fi
}
#################################
fdfs()
{
CheckProcess fdfs
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
ps –ef |grep fdfs| grep -v grep |awk '{print $2}'|xargs kill -9
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
fi
}
#################################
tomcat()
{
CheckProcess tomcat
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
        cd /data/tomcat-gmcc-moa/
        ./bin/shutdown.sh
        ./bin/startup.sh
fi
}
#################################
h5()
{
CheckProcess message
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
        cd /usr/local/service-message/
        sh shutdown.sh
        sh start.sh
fi
}
#################################
lps()
{
CheckProcess lps
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
ps –ef|grep lps| grep -v grep |awk '{print $2}'|xargs kill -9
/usr/local/sbin/lps -c /etc/lps/lps1281.conf -d
/usr/local/sbin/lps -c /etc/lps/lps1282.conf –d
fi
}
#################################
nps()
{
CheckProcess nps
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
ps –ef|gre nps| grep -v grep |awk '{print $2}'|xargs kill -9
cd /home/rkcloud-nps/ && sh start.sh
fi
}
###################################
api()
{
CheckProcess api
Check_RET=$?
 if [ $Check_RET -eq 1 ];
 then
        cd /home/rkapi/api8000/webapps
        sh stop.sh
        sh start.sh
        cd /home/rkapi/api8001/webapps
        sh stop.sh
        sh start.sh
fi
}
#################################
other()
{
echo "nothing"
}
#################################
PROCESS_NUM=`ps -ef |grep "$1" | grep -v grep|grep -v reload.sh| wc -l`
if [ $PROCESS_NUM -eq 0 ];then
case $1 in 
mysql)
        echo "1"
        mysql;;
nginx)
      echo "1"
        nginx;;
zabbix_agentd)
      echo "1"
        zabbix_agentd;;
karaf)
      echo "1"
        karaf;;
keepalived)
        echo "1"
        keepalived;;
redis)
        echo "1"
        redis;;
fdfs)
        echo "1"
        fdfs;;
tomcat)
        echo "1"
        tomcat;;
message)
        echo "1"
        h5;;
lps)
        echo "1"
        lps;;
nps)
        echo "1"
        nps;;
api)
        echo "1"
        api;;
*)
        echo "1"
        other;;
esac
else
 echo "0"
fi

脚本写完后,将脚本上传到服务器相应位置,如/root/路径下; 
2.添加linux计划任务: 
1)crontab -e,在里边加入: 
/5 * * * sh /root/reload.sh 让该脚本每2分钟执行一次 
2)重启crond服务使之生效: 
service crond restart 
3)查看已添加的计划任务,确保本次添加成功: 
crontab -l ,如果可以看到刚才添加的那段话,则证明添加成功。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值