在linux的当前目录logs/文件夹下,每天都会生成”log_20240606_1”、“log_20240606_2”、“log_20240607_1”,这样以“log_日期_编号”构成文件名的日志文件。需要用bash写一个脚本,设置一个日志留存日期的变量,默认为3天,每次运行脚本时需要按照变量,删除指定日期及以前的日志
你可以编写一个Bash脚本来实现这个功能。以下是一个示例脚本,它会删除logs/
目录下超过指定天数的日志文件。默认情况下,日志文件会保留3天。
#!/bin/bash
# 设置默认的日志留存天数
retention_days=3
# 如果提供了参数,则使用参数作为留存天数
if [ ! -z "$1" ]; then
retention_days=$1
fi
# 获取当前日期
current_date=$(date +%Y%m%d)
# 计算保留日期的阈值
threshold_date=$(date -d "$current_date - $retention_days days" +%Y%m%d)
# 进入logs目录
cd logs || { echo "logs directory not found"; exit 1; }
# 遍历所有日志文件
for file in log_*; do
# 提取文件名中的日期部分
file_date=$(echo $file | cut -d'_' -f2)
# 如果文件日期小于等于阈值日期,则删除文件
if [ "$file_date" -le "$threshold_date" ]; then
echo "Deleting $file"
rm "$file"
fi
done
echo "Log cleanup completed."
cleanup_logs.sh
。chmod +x cleanup_logs.sh
./cleanup_logs.sh
默认情况下,脚本会保留3天的日志文件。如果你想指定不同的留存天数,可以在运行脚本时传递一个参数。例如,要保留7天的日志文件:
./cleanup_logs.sh 7
retention_days
变量设置了默认的日志留存天数。current_date
获取当前日期。threshold_date
计算出保留日期的阈值。logs
目录并遍历所有以log_
开头的文件。