功能
删除指定路径日志, 只保留最近产生的日志
1. 创建脚本
mkdir -p /script
cat > /script/logs_clean.sh <<'EOF'
#!/bin/bash
# 保留数量
retain_num=10
# 日志
log_file=/tmp/delete.log
# 需要清理的路径(将需要清理的路径写列表中每行一个)
logs_list=(
/tmp/scheduler
/tmp/scheduler1
/tmp/scheduler2
/tmp/scheduler3
)
echo "==============================================================" >> $log_file
echo "= $(date '+%F %T') =" >> $log_file
echo "==============================================================" >> $log_file
for log_dir in ${logs_list[@]}; do
echo "=> Directory: $log_dir | Start Time: $(date '+%F %T')" >> $log_file
if [ -d "$log_dir" ]; then
sum_num=$(ls $log_dir -rt | wc -l)
let del_num=$sum_num-$retain_num
if [ $del_num -gt 1 ]; then
del_list=$(ls $log_dir -rt | head -n $del_num)
for files in $del_list; do
if [ -e "$log_dir/$files" ]; then
size=$(du -sh $log_dir/$files | awk '{print $1}')
rm -rf $log_dir/$files
if [ ! -e "$log_dir/$files" ]; then
echo "$(date +'%F %T') | $log_dir/$files | $size 删除成功" >> $log_file
else
echo "$(date +'%F %T') | $log_dir/$files | $size 删除失败" >> $log_file
fi
fi
done
fi
fi
echo "=> Directory: $log_dir | End Time: $(date '+%F %T')" >> $log_file
done
echo "================ END $(date '+%F %T') ================" >> $log_file
echo -e "\n\n" >> $log_file
EOF
chmod +x /script/logs_clean.sh
评论区