原创作者:运维工程师 谢晋

nginx定期清理日志

  1. 创建脚本clean_nginx_logs.sh
# vi clean_nginx_logs.sh


#!/bin/bash

# 定义日志文件路径
LOG_DIR="/var/log/nginx"
ACCESS_LOG="access.log"
ERROR_LOG="error.log"

# 定义保留日志的天数
DAYS_TO_KEEP=7

# 清理访问日志
find $LOG_DIR -name "$ACCESS_LOG*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \;

# 清理错误日志
find $LOG_DIR -name "$ERROR_LOG*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f {} \;

# 重新加载 Nginx 以重新打开日志文件
nginx -s reload

echo "Nginx logs older than $DAYS_TO_KEEP days have been cleaned up."
  1. 保存脚本后,确保它具有可执行权限
# chmod +x /path/to/clean_nginx_logs.sh
  1. 设置定时任务
# crontab -e

0 2 * * * /path/to/clean_nginx_logs.sh

注意事项
日志切割:如果你使用 logrotate 来管理 Nginx 日志,可能不需要手动清理日志文件。logrotate 可以自动处理日志文件的轮转和删除。

Nginx 重载:在删除日志文件后,脚本会重新加载 Nginx 以确保日志文件被重新打开。如果你不使用 nginx -s reload,Nginx 可能会继续写入已删除的文件,导致磁盘空间未被释放。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐