Centos+Crontab 定时配置tomcat宕机重启

第一步 crontab 安装及基本命令了解

使用yum安装crontab服务
 yum install vixie-cron

安装成功, 看一下常用命令
 /sbin/service crond start //启动服务
 /sbin/service crond stop //关闭服务
 /sbin/service crond restart //重启服务
 /sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status
手动启动crontab服务:service crond start

查看crontab服务是否已设置为开机启动,执行命令:ntsysv
在CentOS系统中加入开机自动启动: chkconfig --level 35 crond on

 

第二步  tomcat重启 Shell 脚本编写 并授权   (每次改动脚本都要重启crontab)

脚本 controlTomcat.sh 如下==========================

#!/bin/sh

#载入环境变量第一种方式(要改成自己的jdk相关地址)
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.7.0_75/bin
#export JAVA_HOME=/usr/local/java/jdk1.7.0_75
#export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
#export PATH=$PATH:$JAVA_HOME/bin

#载入环境变量第二种方式
source /etc/profile
# 获取tomcat进程ID 要改成自己的tomcat目录名 (下面标蓝的是自己的tomcat名字,及相关自定义路径)
TomcatID=$(ps -ef |grep tomcat_test|grep -w /opt/tomcat_test/conf |grep -v grep|awk '{print $2}')
# tomcat启动程序脚本路径  及 tomcat缓存work路径
StartTomcat=/opt/tomcat_test/bin/startup.sh
TomcatCache=/opt/tomcat_test/work
 # 定义监控项目的是否活着的请求url 地址
WebUrl=http://localhost:8080/safround_ent/syslogin/checkServiceIfDone

#定义发送邮件函数
#IP=47.93.103.197
#PORT=8080
#function send_mail(){
#    maillist=(
#        187631777222111@163.com
#    )
#    DATE=`date +'%F %T'`
#    SUBJECT="${IP}的${PORT}端口发生故障,已自动重启!"
#    CONTENT="时间:${DATE}\n主机:${IP}\n事件:${PORT}端口发生重启"
#        for mail in ${maillist[*]};do
#            echo -e "${CONTENT}" | mail -s "${SUBJECT}" $mail
#        done
#}

# 日志输出 (用于输出监控日志和监控报错日志(报错日志就是请求接口返回的数值))
TomcatMonitorLog=/opt/tomcat_test/logs/TomcatMonitor.log 
GetPageInfo=/opt/tomcat_test/logs/PageInfo.log
Monitor() 
{  
  echo "[info]开始监控tomcat...[$(date +'%F %H:%M:%S')]"  
  if [ "$TomcatID" != "" ];then   
    echo "[info]当前tomcat进程ID为:$TomcatID,继续检测页面..."  
    TomcatServiceCode=$(curl -s -o $GetPageInfo -m 10 --connect-timeout 10 $WebUrl -w %{http_code})  
    if [ $TomcatServiceCode -eq 200 ];then  
        echo "[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常......"  
    else  
        echo "[error]tomcat页面出错,请注意......状态码为$TomcatServiceCode,错误日志已输出到$GetPageInfo"  
        echo "[error]页面访问出错,开始重启tomcat"  
        echo "=============杀进程开始 $TomcatID ========"    
        kill -9 $TomcatID 
        echo "=============杀进程结束==================="        
        echo "=============延时3秒睡眠开始=============="        
        sleep 3  
        echo "=============延时3秒睡眠结束=============="    
        echo "=============清理tomcat缓存开始==========="                
        rm -rf $TomcatCache # 清理tomcat缓存
        echo "=============清理tomcat缓存结束==============="        
        echo "=============重启开始====================="        
        $StartTomcat
        echo "=============重启进行中……================="

        #send_mail
    fi  
  else  
    echo "[error]tomcat进程不存在!tomcat开始自动重启..."  
    echo "[info]$StartTomcat,请稍候......"  
    rm -rf $TomcatCache  
    $StartTomcat

    #send_mail
  fi  
  echo "------------------------------"  
}  
Monitor>>$TomcatMonitorLog

授权如下============================

权授: chmod a+x controlTomcat.sh  #代表授权所有用户这个文件的操作权限

第三步  crontab 定时监控执行 Shell 脚本 (注意shell脚本的绝对路径)

两种方式

第一种:编辑  /etc/crontab  文件 (指定频次,及执行者 ,及执行的shell脚本绝对路径)

 第二种:命令直接编辑 保存

crontab -e //编写一条定时任务
crontab -l //列出当前用户定时任务
crontab -r //删除当前用户定时任务

crontab文件格式:

* * * * * command

minute hour day month week command

分 时 天 月 星期 命令
minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

 

参考文献

https://www.jianshu.com/p/3c05025066d3

https://www.cnblogs.com/zgq123456/p/10966810.html

https://blog.csdn.net/zb313982521/article/details/87914480

如要 发送邮件 放开上面 脚本中注掉的发送邮件函数,并参考 上面后两篇大神文章

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值