定时监测磁盘使用率并清除日志并重启tomcat

#!/bin/bash

export JAVA_HOME=/usr/local/java/jdk-9.0.4 #自行替换
export PATH=$PATH:$JAVA_HOME/bin #自行替换
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #自行替换

DeleteLogUrl=/tmp/DeleteLog.log #执行日志保存路径,自行替换
TomcatLogsUrl=/usr/local/tomcat/apache-tomcat-9.0.45/logs/* #自行替换
ShutDownTomcat=/usr/local/tomcat/apache-tomcat-9.0.45/bin/shutdown.sh #自行替换
StartTomcat=/usr/local/tomcat/apache-tomcat-9.0.45/bin/startup.sh #自行替换
TomcatCache=/usr/local/tomcat/apache-tomcat-9.0.45/work #自行替换
WebUrl=http://localhost:8080 #自行替换
#监测某一挂载点磁盘使用率,奇葩grep会把子目录找出来,想了想加了个行尾$
UsedDFH=$(df -h |grep -vw "Used" |grep -w "/run$" |awk '{print $5}'|cut -d "%" -f 1)
DeleteLogMthod()
{
    echo -e "\e[1;31m [info]开始时间:$(date +%Y_%m_%d_%H%M%S) \e[0m"

        echo "[info]当前主硬盘使用率为:$UsedDFH"
        echo "[info]开始判断是否大于等于80"
    if [ $UsedDFH -ge 80 ];then
        echo -e "\e[1;31m [info]主硬盘使用率大于等于80%,即将开始关闭tomcat \e[0m"
        $ShutDownTomcat
        sleep 20 #自行调整
        #tomcat进程号
        TomcatID=$(ps -ef |grep tomcat |grep -w 'tomcat'|grep -v 'grep'|awk '{print $2}')
        if [ $TomcatID ];then
            echo -e "\e[1;31m [info]杀死$TomcatID \e[0m"
            kill -9 $TomcatID
            rm -rf $TomcatCache # 清理tomcat缓存
        else
            echo -e "\033[32m [info]已正常关闭tomcat \033[0m"
            rm -rf $TomcatCache # 清理tomcat缓存
        fi
        echo -e "\e[1;31m [info]开始删除tomcat日志 \e[0m"
        rm -rf $TomcatLogsUrl
        echo -e "\e[1;31m $(date +%Y_%m_%d_%H%M%S) 日志删除已完成 \e[0m"
        
        echo "********************开始启动tomcat*************************************************"
        $StartTomcat
        sleep 20 自行调整
        #拿到200说明服务没问题
        TomcatServiceCode=$(curl -s -o /tmp/null -m 10 --connect-timeout 10 $WebUrl -w %{http_code}     )
        rm -rf /tmp/null
            if [ $TomcatServiceCode -eq 200 ];then
            echo "********[info]页面返回码为$TomcatServiceCode,tomcat启动成功,测试页面正常********"
        fi
    else
        echo -e "\033[32m [info]主硬盘使用率小于80,不需要删除日志文件 \033[0m"
    fi
    echo "-------------------------------------------------------------"
}
DeleteLogMthod >> $DeleteLogUrl

本sh参考以下文档
监测tomcat状态传送门:https://blog.csdn.net/zhang41228/article/details/79860030

你可能感兴趣的:(定时监测磁盘使用率并清除日志并重启tomcat)