Nginx日志切分脚本
因为学习初期都是习惯自己去解决问题没有使用工具切分日志,所以当时写了一个根据天数日志切分脚本,现在记录下。
LOG_FILE="/data/log/nginx/filter.access1.log"
PROCESSED_LOG_FILE="/data/log/nginx/filter.access.log"
month=$(LC_ALL=C date "+%b")
year=$(date "+%Y")
days=""
for i in {0..1}
do
dayf=$(date -d "$i days ago" +%d)
day="$dayf/$month/$year"
if [ -z "$days" ]
then
days="$day"
else
days="$days|$day"
fi
done
echo $days
grep -E $days "$LOG_FILE" > "$PROCESSED_LOG_FILE"
# 检查新文件是否非空
if [ -s "$PROCESSED_LOG_FILE" ]; then
# 如果新文件非空,询问用户是否替换原文件
read -p "新文件已生成且非空,是否替换原文件? (y/n) " choice
if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
mv "$PROCESSED_LOG_FILE" "$LOG_FILE"
echo "日志文件已更新,所有包含2023的行已被删除。"
else
echo "未替换原文件,处理后的内容已保存在$PROCESSED_LOG_FILE"
fi
else
echo "没有行被删除,原文件保持不变。"
fi
当然如果需要安装工具切分日志的话,可以使用logrotate工具。