在linux的目录下,每天都会生成”log_20240606_1”、“log_20240606_2”、“log_20240607_1”,这样以“log_日期_编号”构成文件名的日志文件。需要用bash写一个脚本,设置一个日志留存日期的变量,每次运行脚本时需要按照变量,删除指定日期及以前的日志
可以使用Bash脚本来实现这个需求。以下是一个示例脚本,它会删除指定日期及以前的日志文件。假设你将这个脚本命名为cleanup_logs.sh
。
#!/bin/bash
# 设置日志留存日期的变量,格式为YYYYMMDD
RETENTION_DATE="20240607"
# 获取当前目录下的所有日志文件
LOG_FILES=$(ls log_*)
# 遍历所有日志文件
for FILE in $LOG_FILES; do
# 提取文件名中的日期部分
FILE_DATE=$(echo $FILE | awk -F'_' '{print $2}')
# 比较文件日期和留存日期
if [[ $FILE_DATE -le $RETENTION_DATE ]]; then
echo "Deleting $FILE"
rm $FILE
fi
done
cleanup_logs.sh
。chmod +x cleanup_logs.sh
./cleanup_logs.sh
RETENTION_DATE
变量设置为你希望保留的最早日期,格式为YYYYMMDD
。LOG_FILES
变量获取当前目录下所有以log_
开头的文件。for
循环遍历每个日志文件。awk
命令提取文件名中的日期部分。if
语句比较文件日期和留存日期,如果文件日期小于或等于留存日期,则删除该文件。你可以根据需要修改RETENTION_DATE
的值来调整日志文件的保留策略。