#!/bin/bash
# 当前时间
current_time=`date +"%Y-%m-%d %H:%M:%S"`
# 保留日志的天数
retain_log_days=30
retain_days_ago_date=`date -d "${retain_log_days} day ago" +%Y%m%d`
# 清理的目录集合:须以/结尾
clean_dirs=('/data/bootstart/service/izhaowo_city_expansion_manage/logs/' '/data/bootstart/service/izhaowo_wedding_planning_operation_center_manage/logs/' '/data/service/manage/manage_partner/logs/' '/data/service/manage/worker-excitaion/logs/' '/data/service/manage/aijiuxi-bus/logs/')
echo "日志清理开始[$current_time],清理[$retain_days_ago_date]之前的日志..."
# 遍历清理
for dir in ${clean_dirs[*]}
do
echo "开始清理目录[$dir]..."
files=`ls $dir -lrt --time-style="+%Y%m%d" | sed "1 d"`
# 重置换行符
IFS_OLD=$IFS
IFS=$'\n'
for file in ${files[*]}
do
IFS_NEW=$IFS
IFS=" "
file_date=`echo ${file} | awk '{print $6}'`
file_name=`echo ${file} | awk '{print $7}'`
if [ $file_date -le $retain_days_ago_date ]
then
echo "${dir}${file_name} 应该删除..."
`rm -rf ${dir}${file_name}`
fi
IFS=$IFS_NEW
done
# 恢复换行符
IFS=$IFS_OLD
done
echo "日志清理结束..."
结合crontab或supervisor使用,即可实现文件的定时清理。