定期删除日志脚本

import os
import datetime

log_directory = "/path/to/logs" # 日志目录的路径
days_to_keep = 90 # 需要保留的天数

计算要删除的日期

target_date = datetime.datetime.now() - datetime.timedelta(days=days_to_keep)
target_date = target_date.strftime("%Y%m%d")

遍历日志目录下的所有文件

for root, dirs, files in os.walk(log_directory):
for file in files:
if file.endswith(".log"):
file_path = os.path.join(root, file)
# 获取文件的修改时间
modified_time = os.path.getmtime(file_path)
modified_time = datetime.datetime.fromtimestamp(modified_time)
modified_date = modified_time.strftime("%Y%m%d")

        # 如果文件的修改日期在目标日期之前,则删除该文件  
        if modified_date < target_date:  
            os.remove(file_path)  
            print(f"删除文件: {file_path}")

!/bin/bash

log_directory="/path/to/logs" # 日志目录的路径

days_to_keep=90 # 需要保留的天数

计算要删除的日期

target_date=$(date -d "-${days_to_keep} days" +%Y%m%d)

构建find命令的参数

find_args="-type f -name '*.log' -mtime +0 -printf '%T+ %p\n'"
find_cmd="find $log_directory $find_args"

获取需要删除的日志文件列表

log_files=$(eval $find_cmd | grep "^$(date -d "${days_to_keep} days ago" +%Y%m%d) " | awk '{print $2}')

删除指定的日志文件

for log_file in $log_files; do
rm "$log_file"
echo "删除文件: $log_file"
done

posted @ 2023-08-31 12:46  CF211  阅读(82)  评论(0编辑  收藏  举报