Tomcat日志快速备份和清理
Tomcat 的 catalina.out 控制台日志默认不会自动切分,不过一段时间不管,日志大小可能就几十个G了,没准就会收到磁盘报警:该清理日志了
磁盘空间报警
最近总能收到磁盘空间使用率超过:80%以上的报警,基本上都是 catalina.out
(一般都在30G~60G之间)日志过大导致的
由于总的磁盘空间本来也不大(数据盘100G),所以总是容易收到报警
查看空间使用量:
$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 100G 17G 83G 17% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
如果不确定是哪些文件过大导致的,可以参考:du查询文件夹/文件占用空间 top10
备份&清理
tomcat_log_clean.sh
脚本清单:(限制在了每天的23点执行)
#!/bin/bash
#author:xu3352
#desc:backup and clean catalina.out logs
DATE=`date "+%Y%m%d"`
HOUR=`date +%H`
# backup and clear
cd /mnt/apache-tomcat-6.0.36-XXX/logs
# backup at the end of the day
if [ $HOUR = '23' -a ! -f "catalina.out.$DATE" ]; then
echo "backup catalina.out.$DATE ..."
cp catalina.out catalina.out.$DATE
# truncate
echo "truncate catalina.out..."
echo "" > catalina.out
fi
# delete 5 days expired files
echo "delete 5 days expired files..."
find . -name "catalina.out.*" -type f -mtime +5 | xargs rm -rf
记得给可执行权限:
chmod 755 tomcat_log_clean.sh
定时任务
指定到 23:58 分执行任务
# 编辑定时任务,一行代表一个定时任务
# "58 23 * * *" 代表每天的 23:58:00 执行任务
$ crontab -e
58 23 * * * sh /path/tomcat_log_clean.sh
# 查看有哪些定时任务
$ crontab -l
58 23 * * * sh /path/tomcat_log_clean.sh
其他
echo "" > file
这种清空方式比较暴力(当然也会遗漏部分数据),绝大部分情况都是好使的,如果不好使的话,可以尝试另一种备份和清理方式(logrotate
工具,参考本文最后的链接),这种配置稍微麻烦一点,linux下默认日志切分的好像都是使用这个工具,非常强大
参考:
blog comments powered by Disqus