IT评测·应用市场-qidao123.com

标题: Nginx日志按天切割、压缩,并自动清理 30 天前的旧日志文件 [打印本页]

作者: 鼠扑    时间: 2025-1-10 21:28
标题: Nginx日志按天切割、压缩,并自动清理 30 天前的旧日志文件
以下是一个完整的 Shell 脚本,用于实现 Nginx 日志按天切割、压缩,并自动清理 30 天前的旧日志文件。
脚本内容
  1. #!/bin/bash
  2. # 定义日志目录
  3. LOG_DIR="/var/log/nginx"  # Nginx 日志目录
  4. DAYS_TO_KEEP=30           # 保留最近多少天的日志
  5. # 检查日志目录是否存在
  6. if [ ! -d "$LOG_DIR" ]; then
  7.   echo "错误:日志目录 $LOG_DIR 不存在!"
  8.   exit 1
  9. fi
  10. # 获取昨天的日期(用于日志切割)
  11. YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
  12. # 切割日志文件
  13. if [ -f "$LOG_DIR/access.log" ]; then
  14.   mv "$LOG_DIR/access.log" "$LOG_DIR/access_$YESTERDAY.log"
  15. fi
  16. if [ -f "$LOG_DIR/error.log" ]; then
  17.   mv "$LOG_DIR/error.log" "$LOG_DIR/error_$YESTERDAY.log"
  18. fi
  19. # 向 Nginx 主进程发送 USR1 信号,重新打开日志文件
  20. if [ -f /var/run/nginx.pid ]; then
  21.   kill -USR1 $(cat /var/run/nginx.pid)
  22. fi
  23. # 压缩昨天的日志文件
  24. if [ -f "$LOG_DIR/access_$YESTERDAY.log" ]; then
  25.   gzip "$LOG_DIR/access_$YESTERDAY.log"
  26. fi
  27. if [ -f "$LOG_DIR/error_$YESTERDAY.log" ]; then
  28.   gzip "$LOG_DIR/error_$YESTERDAY.log"
  29. fi
  30. # 清理 30 天前的旧日志文件
  31. find "$LOG_DIR" -type f -name "access_*.log.gz" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
  32. find "$LOG_DIR" -type f -name "error_*.log.gz" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
  33. # 记录操作日志
  34. echo "$(date '+%Y-%m-%d %H:%M:%S') - 日志已切割、压缩并清理完成。" >> "$LOG_DIR/nginx_log_cleanup.log"
复制代码
脚本说明

使用方法

注意事项

通过这个脚本,你可以实现 Nginx 日志按天切割、压缩并自动清理旧日志,有效管理磁盘空间并保留须要的日志记录。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4