一、创建备份脚本,存放在/etc/init.d,命名为nginx_del_log.sh
#!/bin/bash
LOG_DIR="/www/server/nginx/logs" # Nginx日志目录
DAYS=10 # 保留日志的天数
# 获取当前日期
CURRENT_DATE=$(date +%Y-%m-%d)
# 进入日志目录
cd $LOG_DIR
# 遍历目录中的所有日志文件
for LOG_FILE in $LOG_DIR/access-*.log; do
if [ -f "$LOG_FILE" ]; then
# 提取日志文件的日期部分,去掉.log后缀
LOG_DATE=$(echo $(basename $LOG_FILE) | sed 's/.log$//' | cut -d'-' -f2-)
# 计算文件的天数差
FILE_DAYS=$(( ( $(date +%s -d "$CURRENT_DATE") - $(date +%s -d "$LOG_DATE") ) / 86400 ))
if [ $FILE_DAYS -gt $DAYS ]; then
# 如果文件超过10天,则删除
rm -f "$LOG_FILE"
fi
fi
done
二、赋权脚本
chmod +x /etc/init.d/nginx_del_log.sh
手动运行,确保脚本正常运行
/etc/init.d/nginx_del_log.sh
三、创建定时任务
- 编辑定时任务:
crontab -e
按字母a,进行编辑
##每天上午 8:00 执行一次任务
0 8 * * * /etc/init.d/nginx_del_log.sh
按esc退出编辑,按:wq 进行保存
- 定时任务查询:
crontab -l
- 重新加载定时任务配置:
/sbin/service crond reload