欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

crontab 定时执行任务的详细分析(附演示 | 定时空 Tomcat 实践) - 3. 实践

最编程 2024-06-08 15:58:17
...

以定期删除Tomcat日志文件为基础

由于tomcat在运行时无法删除logs文件,所以需要单独弄个脚本
错误版本为上述Demo的操作

3.1 错误版本

  • 文件编辑:crontab -e

添加定时任务:

0 0 * * * find /usr/local/tomcat/apache-tomcat-7.0.85/logs -mtime +1 -exec rm -rfv {} \;
0 0 * * * find /usr/local/tomcat/apache-tomcat-7.0.85/temp/bdf2-export-temp/ -mtime +1 -exec rm -rfv {} \;

截图如下:

在这里插入图片描述

确保crontab 任务已正确配置,可以使用以下命令查看当前用户的定时任务:crontab -l

在这里插入图片描述

为了方便后续处理,也可使用如下方式做一个归类:

在某个位置设置一个脚本文件,记住脚本文件名以及路径:

#!/bin/bash
export LANG=zh_CN
#tomcat日志文件路径
export WEB_TOMCAT1=/usr/local/tomcat/apache-tomcat-7.0.85/logs
echo > ${WEB_TOMCAT}/catalina.out
find ${WEB_TOMCAT}/* -mtime +7 -type f -exec rm -f {} \;

截图如下:

在这里插入图片描述

设置脚本可执行chmod a+x cleanTomcatlog.sh

编辑用户的 crontab 文件crontab -e

添加定时任务30 04 * * * /usr/local/script/cleanTomcatlog.sh

3.2 正确版本

编制正确的删除脚本:(定期删除一天前的日志)

-mtime +1表示查找超过一天前修改的文件。如果你需要精确匹配前一天的文件,可以使用-mtime 1。但是,通常情况下,-mtime +1已经可以删除超过一天的旧文件

#!/bin/bash
logs_path="/usr/local/tomcat/apache-tomcat-7.0.85/logs"
temp_path="/usr/local/tomcat/apache-tomcat-7.0.85/temp/bdf2-export-temp"

# 定时清理超过1天的Tomcat日志脚本
find $logs_path -mtime +1 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "localhost.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "catalina.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "host-manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +1 -name "catalina.out" -exec rm -rf {} \;
>$logs_path/catalina.out;

# 定时清理超过1天的临时导出文件
find $temp_path -mtime +1 -name "*.xls" -exec rm -rf {} \;

在这里插入图片描述

为了让其定期执行,正确还是结合crontab来操作:crontab -e

截图如下:

在这里插入图片描述

对于文件的匹配规则,最好观察下格式
有些可能多个

find $logs_path -mtime 1 -name "catalina.out.*" -exec rm -rf {} \;