定期删除日志脚本
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