阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat 日志自动删除的实现

222次阅读
没有评论

共计 2264 个字符,预计需要花费 6 分钟才能阅读完成。

背景

生产环境中 Tomcat 每天都会产生很多日志,如果不清理磁盘容量会不够,手动清理又太麻烦。因此写个脚本每天定时去删除 5 天前 (根据实际情况而定) 的日志文件。

编写脚本

1. 写一个 /usr/local/script/cleanTomcatlog.sh 脚本
#!/bin/bash
export LANG=zh_CN
#tomcat1 日志文件路径
export WEB_TOMCAT1=/usr/local/tomcat1/logs
#tomcat2 日志文件路径
export WEB_TOMCAT2=/usr/local/tomcat2/logs
#tomcat3 日志文件路径
export WEB_TOMCAT3=/usr/local/tomcat3/logs
echo > ${WEB_TOMCAT1}/catalina.out
echo > ${WEB_TOMCAT2}/catalina.out
echo > ${WEB_TOMCAT3}/catalina.out
find ${WEB_TOMCAT1}/* -mtime +5 -type f -exec rm -f {} \;
find ${WEB_TOMCAT2}/* -mtime +5 -type f -exec rm -f {} \;
find ${WEB_TOMCAT3}/* -mtime +5 -type f -exec rm -f {} \;

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

 3. 在控制台上输入以下命令
  crontab -e

 4. 按 i 键编辑这个文本文件,输入以下内容,每天凌晨 4:30 重启 tomcat

按 esc 键退出编辑,输入 wq 回车保存
  30 04 * * * /usr/local/script/cleanTomcatlog.sh

按 esc 键退出编辑,输入 wq 回车保存

5. 重启定时任务
[root@]# service crond stop

[root@]# service crond start

名称解释

详解 crontab 和 find 命令

crontab
通过 crontab 可以设定程序的执行时间表,例如让程序在每天的 8 点,或者每个星期一的 10 点执行一次。
crontab -l 列出时间表;
crontab - e 编辑时间表;
crontab - d 删除时间表;

“-l”没什么可说的,就是一个查看而已;
“-e”是编辑,和 vi 没什么差别(其实就是用 vi 编辑一个特定文件);
“-d”基本不用,因为它把该用户所有的时间表都删除了,一般都是用“-e”编辑把不要了的时间表逐行删除;

那到底该如何编辑呢?

crontab 文件的格式是:M H D m d CMD。
一个 6 个字段,其中最后一个 CMD 就是所要执行的程序,如 cleanTomcatlog.sh。
M:分钟(0-59)
H:小时(0-23)
D:日期(1-31)
m:月份(1-12)
d:一个星期中的某天(0-6,0 代表周日)

这 5 个时间字段用空格隔开,其值可以是一个数字,也可以用逗号隔开的多个数字(或其他),如果不需设置,则默认为“*”。

例如,每天的 04 点 30 分执行 cleanTomcatlog.sh,就是 ==30 04 * * * /usr/local/script/cleanTomcatlog.sh==。

find
基本格式:find  path expression
1. 按照文件名查找
(1)find / -name httpd.conf #在根目录下查找文件 httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在 /etc 目录下文件 httpd.conf
(3)find /etc -name ‘*srm*’ #使用通配符 *(0 或者任意多个)。表示在 /etc 目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name ‘srm*’ #表示当前目录下查找文件名开头是字符串‘srm’的文件

2. 按照文件特征查找

(1)find / -amin -10 # 查找在系统中最后 10 分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后 48 小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group 为 cat 的文件
(5)find / -mmin -5 # 查找在系统中最后 5 分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后 24 小时里修改过的文件
(7)find / -user fred #查找在系统中属于 fred 这个用户的文件
(8)find / -size +10000c #查找出大于 10000000 字节的文件(c: 字节,w: 双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于 1000KB 的文件

3. 可以对查找到的文件在进行操作
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的 Y 确认输入执行
-ls
打印同种文件格式的文件.

例如:

find / -name “*xxx*” -ls

查找根目录下名称包含 xxx 的文件并显示信息

find /usr/local/tomcat1/logs/  -mtime +5 -name “*201?*” -exec rm -rf {} \;

查找出符合条件的日志文件并删除所有的时间表都删除了,一般都是用“-e”编辑把不要了的时间表逐行删除;

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2264字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中