当前位置: 首页 > news >正文

Nginx日志切割

自己部署的个人服务器,主要使用Nginx服务器来做转发和展示很多的静态页面内容,因此每天的日志还是比较多。

日志多了之后,不可能所有的日志都放在同一个文件中,这时候,就需要考虑日志切割,自己是准备按照天保存。

然后跟着千问提供的方案,一步一步地完成了日志切割,主要使用的是定时脚本。

 

.1.创建脚本(宿主机)

nano /opt/u01/exam/nginx/nginx_rotate.sh

 

.2.脚本内容如下-自己使用docker-compose来进行部署,因此脚本也是围绕该部署方式来写的

#!/bin/bash

 

# ======================

# Nginx Docker 日志按天切割脚本(适用于 docker-compose 部署)

# 功能:切割 access.log / error.log,通知 Nginx 重开日志,清理旧日志

# 作者:根据用户需求定制

# ======================

 

# --- 配置区(请根据实际情况修改)---

LOG_DIR="/xxx/exam/nginx/log"                # 宿主机挂载的 Nginx 日志目录

COMPOSE_FILE="/xxx/exam/docker-compose.yml"  # docker-compose.yml 的绝对路径

NGINX_SERVICE="nginx"                            # docker-compose 中 Nginx 服务名

RETAIN_DAYS=60                                   # 保留日志天数

LOG_OUTPUT="/var/log/nginx_rotate.log"           # 脚本自身运行日志(可选)

 

# --- 日志函数 ---

log() {

    local msg="[ $(date '+%Y-%m-%d %H:%M:%S') ] $*"

    echo "$msg" | tee -a "$LOG_OUTPUT" >&2

}

 

# --- 主逻辑 ---

log "开始执行 Nginx 日志切割任务..."

 

YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

 

# 1. 切割 access.log

if [ -f "${LOG_DIR}/access.log" ]; then

    mv "${LOG_DIR}/access.log" "${LOG_DIR}/access_${YESTERDAY}.log"

    log "已切割 access.log → access_${YESTERDAY}.log"

else

    log "警告:${LOG_DIR}/access.log 不存在,跳过切割"

fi

 

# 2. 切割 error.log

if [ -f "${LOG_DIR}/error.log" ]; then

    mv "${LOG_DIR}/error.log" "${LOG_DIR}/error_${YESTERDAY}.log"

    log "已切割 error.log → error_${YESTERDAY}.log"

else

    log "警告:${LOG_DIR}/error.log 不存在,跳过切割"

fi

 

# 3. 通知 Nginx 重开日志文件

sent_signal=false

 

# 尝试使用 docker compose(新版 Docker 内置)

if command -v docker >/dev/null && docker compose version >/dev/null 2>&1; then

    if docker compose -f "$COMPOSE_FILE" kill -s HUP "$NGINX_SERVICE" 2>/dev/null; then

        log "已通过 'docker compose' 向服务 '$NGINX_SERVICE' 发送 HUP 信号"

        sent_signal=true

    fi

fi

 

# 回退到 docker-compose(独立命令)

if [ "$sent_signal" = false ] && command -v docker-compose >/dev/null; then

    if docker-compose -f "$COMPOSE_FILE" kill -s HUP "$NGINX_SERVICE" 2>/dev/null; then

        log "已通过 'docker-compose' 向服务 '$NGINX_SERVICE' 发送 HUP 信号"

        sent_signal=true

    fi

fi

 

# 如果两种方式都失败

if [ "$sent_signal" = false ]; then

    log "错误:无法向 Nginx 发送 HUP 信号,请检查 Docker 环境或服务名"

    exit 1

fi

 

# 4. 清理超过 RETAIN_DAYS 天的日志

log "开始清理 ${RETAIN_DAYS} 天前的日志..."

find "${LOG_DIR}" -name "access_*.log" -mtime +$((RETAIN_DAYS)) -delete 2>/dev/null

find "${LOG_DIR}" -name "error_*.log" -mtime +$((RETAIN_DAYS)) -delete 2>/dev/null

log "日志清理完成"

 

log "Nginx 日志切割任务成功结束"

 

编辑方式-

打开脚本:nano /opt/u01/exam/nginx/nginx_rotate.sh

直接粘贴 / 修改内容(无需切换模式);

编辑完成后,按 Ctrl+O(字母 O) → 提示 “File Name to Write”,直接回车确认保存;

再按 Ctrl+X 退出 nano 编辑器。

image

 

 

检查脚本语法是否正确-

bash -n /opt/u01/exam/nginx/nginx_rotate.sh

image

 

 

.3.设置权限+定时任务

sudo chmod +x /opt/u01/exam/nginx/nginx_rotate.sh

 

sudo crontab -e

添加-

0 1 * * * /opt/u01/exam/nginx/nginx_rotate.sh  # 每天凌晨1点执行

 

.4.服务器测试效果,完全可行。

image

 查看具体日志

image

 

感谢千问 大模型。只能能够描述出具体的IT需求,它就能给我提供一个好的思路,还有就是辅助写代码。

 

http://www.jsqmd.com/news/69520/

相关文章:

  • 2025 最新桥梁防腐涂料厂家 TOP5推荐!绿色防腐 + 工程实证权威榜单发布,技术赋能守护基建安全 - 全局中转站
  • 数据采集实践第四次作业—102302131陈宇新
  • 6502 算术逻辑单元(ALU)
  • make出错立即终止
  • Testing Reprised之关于基米
  • 北京守嘉健康干细胞项目介绍 - 品牌排行榜单
  • OTOFIX IM2 1-Year Update Subscription: Ensure Latest Vehicle Diagnostics for European/American Cars
  • Solon AI 开发学习19 - 结合 Solon Flow 实现 ReAct 效果
  • 网络安全编程——基于Python达成的SSH通信(Windows执行)
  • 深入解析:2025年11月11日 AI快讯
  • 2025 最新水磨石抗污剂厂家 TOP5 评测!环保高性能标杆榜单发布,守护石材持久美观。国内水磨石抗污剂品牌2025年度盘点 - 全局中转站
  • 统计文本文件记录
  • 2025最新水洗石抗污剂厂家TOP5评测!环保性能与抗污效果品牌双权威榜单发布,技术赋能重构景观防护生态 - 全局中转站
  • When Ongeki Gets Stuck at the Aime Check
  • 如果同一个子网中,设备超过255台,那会如何才能保证处于同一子网
  • 233. 数字 1 的个数
  • Autel MaxiPRO MP808TS 1-Year Update Subscription: Keep Your Diagnostic Tool Updated Effective
  • 需求的变更控制
  • 在java中实现c#的int.TryParse方法
  • 基于微信小应用的茶叶茶具销售和管理系统(源码+论文+部署+安装)
  • 我的 OI 生涯(更新中)
  • 少儿编程哪家强?这几家机构不容错过! - 品牌测评鉴赏家
  • 【值得收藏】构建企业级智能体RAG系统:解决大模型五大痛点,让AI真正理解业务 - 教程
  • AI浪潮下的冷思考:技术、就业与我们的未来
  • 为AI时代蓄力:除了几大热门,还有哪些值得关注的少儿编程选择? - 品牌测评鉴赏家
  • 网络协议之传统DNS存在的问题以及httpdns - 详解
  • 孩子想学人工智能,有推荐的机构吗?2025 年权威测评与精选指南 - 品牌测评鉴赏家
  • [挑战成为CCPC传奇单挑王暨第二届CACC游记]一、我又回来了
  • 孩子AI梦起航:靠谱机构大揭秘 - 品牌测评鉴赏家
  • 2025年少儿编程机构选课指南:从口碑到实力的全方位测评 - 品牌测评鉴赏家