welcome to xlongwei.com

欢迎大家一起学习、交流、分享


QQ:9167702333 邮箱:admin@xlongwei.com

clear_logs.sh linux日志文件清理脚本


分类 Java   关键字 分享   标签 linux   发布 hongwei  1431592728997
注意 转载须保留原文链接,译文链接,作者译者等信息。  
服务器上通常每天都会生成许多日志文件,日志清理脚本可以使用crontab每天运行一次,通常是删除N天之前的文件,这个脚本还考虑到了至少保留N个文件。
files=10 #至少保留10个文件,如果文件数少于10个则不清理
days=30 #删除30天之前的文件

log_dirs指定多个需要清理的日志目录
files=10
days=30

log_dirs=(
/var/log/ite #应用日志
/soft/tomcat-ite/logs #tomcat日志
/soft/backup/ourjsdata #ourjs数据备份文件
/soft/backup/mysqldata #数据库备份文件
)

for ((i=0; i<${#log_dirs[@]}; ++i))
do
log_dir=${log_dirs[i]}
echo $log_dir
guard=`ls $log_dir -ltr | head -n -$files | tail -n 1 | awk '{print $9}'`;
echo "guard is $guard"

if [ -n "$guard" ]; then
log_files=`find $log_dir -mtime +$days ! -newer $log_dir/$guard | sort -r`

for log_file in $log_files
do
echo $log_file removed
rm -f $log_file
done

#由于磁盘空间的限制,可能会删除旧文件;如果磁盘空间足够,可以移动到另一个备份目录,那里可以备份更长时间的数据 #短期备份可能发生意外:备份数据导出失败,大小为0,如果再有半个月不知情,则短期备份全部失效,所有需要更多备份 #还可以研究备份到云盘,只是不太好实现;数据多放几个篮子更加保险,备份到本地内网电脑也有点可取,数据更安全
else
echo "files less than $files"
fi

done

定时运行
crontab -e
0 23 * * * sh /soft/shells/clear_logs.sh >> /var/log/clear_logs.log