#!/bin/bash
# 自动切割nginx访问日志脚本
# 设置nginx日志目录
log_path="/var/log/nginx/"
# 设置日志名称
log_name="access.log"
# 设置保存历史日志的目录
backup_dir="/var/log/nginx/backup/"
# 设置日志切割日期格式
date_format="%Y%m%d"
# 判断保存历史日志目录是否存在,不存在则创建
if [ ! -d "$backup_dir" ]; then
mkdir -p "$backup_dir"
fi
# 获取当前日期
current_date=$(date +"$date_format")
# 构造备份日志文件名
backup_log="${backup_dir}${log_name}.${current_date}"
# 判断nginx日志文件是否正在被访问,若正在被访问,则备份失败
if [ -f "${log_path}${log_name}" ] && [ "$(lsof "${log_path}${log_name}" | wc -l)" -gt "0" ]; then
echo "Error: Nginx log file is being accessed!"
exit 1
fi
# 判断nginx日志文件是否存在,若存在则备份日志文件
if [ -f "${log_path}${log_name}" ]; then
mv "${log_path}${log_name}" "$backup_log"
fi
# 发送HUP信号给Nginx进程,实现日志文件切割
kill -HUP $(cat /var/run/nginx.pid)
# 输出日志备份成功信息
echo "Nginx log backup completed: ${backup_log}"以上是一个用于自动切割nginx访问日志的脚本的示例。该脚本通过备份并重命名当前日志文件,然后发送HUP信号给Nginx进程,实现日志文件切割。备份日志存放在指定的目录中,并按日期格式命名。执行该脚本可以实现nginx日志的自动切割和管理。