使用Bash脚本和Logrotate实现Nginx日志切割

Nginx是一个广泛使用的高性能Web服务器,它能够处理大量的并发连接,但同时也会生成大量的日志文件。为了有效管理这些日志文件并确保系统的正常运行,我们需要定期对Nginx的日志文件进行切割和归档。本文将介绍如何使用Bash脚本和Logrotate来实现Nginx日志的切割。

Bash脚本实现

假设Nginx的访问日志文件位于/var/log/nginx/access.log

#!/bin/bashLOG_FILE="/var/log/nginx/access.log"
ARCHIVE_DIR="/var/log/nginx/archive"# 判断归档目录是否存在,如果不存在则创建
if [ ! -d "$ARCHIVE_DIR" ]; thenmkdir -p $ARCHIVE_DIR
fi# 使用gzip压缩日志文件并移动到归档目录
DATE=$(date +"%Y%m%d%H%M%S")
mv $LOG_FILE "$ARCHIVE_DIR/access_$DATE.log"
gzip "$ARCHIVE_DIR/access_$DATE.log"# 重新打开日志文件,以便Nginx继续写入新的日志
kill -USR1 $(cat /var/run/nginx.pid)

以上脚本的功能包括:

  • 检查归档目录是否存在,如果不存在则创建。
  • 将当前的访问日志文件移动到归档目录,并使用gzip进行压缩。
  • 向Nginx发送USR1信号,以便重新打开日志文件,使Nginx能够继续写入新的日志。

Logrotate实现

Logrotate是一个Linux系统上用来管理日志文件的工具,它可以定期轮转日志文件、压缩旧的日志文件以及删除过期的日志文件。Logrotate通过配置文件定义轮转规则,并由系统的cron任务周期性地执行。

假设Nginx的有两个访问日志文件分为位于

  • /apps/openresty/nginx/logs/head/access.log
  • /apps/openresty/nginx/logs/domain/access.log。

在/etc/logrotate.d目录下创建一个名为nginx的文件,并添加以下内容

/apps/openresty/nginx/logs/head/access.log
/apps/openresty/nginx/logs/domain/access.log
{daily                        # 每天切割missingok                    # 忽略错误rotate 7                    # 最多保留多少个存档compress                     # 切割后且压缩delaycompress                # 延迟压缩动作在下一次切割notifempty                   # 日志为空就不切割create 640 qhdrsj qhdrsj     # 切割的文件权限sharedscripts                # 共享脚本,结果为空postrotate                   # 收尾动作,重新生成nginx日志if [ -f /apps/openresty/nginx/logs/domain/nginx.pid ]; thenkill -USR1 `cat /apps/openresty/nginx/logs/domain/nginx.pid`fiif [ -f /apps/openresty/nginx/logs/head/nginx.pid ]; thenkill -USR1 `cat /apps/openresty/nginx/logs/head/nginx.pid`fiendscript                    # 结束动作}

以上配置的含义如下:

  • daily:每天轮转一次日志。
  • missingok:如果日志文件不存在,则不报错。
  • rotate 7:保留最近的7个归档文件。
  • compress:使用gzip压缩轮转后的日志文件。
  • delaycompress:延迟压缩,直到下一次轮转时才压缩上一次的日志文件。
  • notifempty:如果日志文件为空,则不轮转。
  • create:设置新创建的日志文件的权限和属主。
  • sharedscripts:在所有日志文件轮转之后执行一次脚本。
  • postrotate和endscript:在轮转后执行的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天Get一个小技巧:用DolphinScheduler实现隔几天调度

转载自tuoluzhe8521 这篇小短文将教会你如何使用Apache DolphinScheduler实现隔几天调度,有此需求的小伙伴学起来! 1 场景分析 DolphinScheduler定时器模块-定时调度时每3秒|每3分钟|每3天这种定时,不能够跨分钟,跨小时&#x…

【C++】:string类的基本使用

目录 引言一,string类对象的常见构造二,string类对象的容量操作三,string类对象的访问及遍历操作四,string类对象的修改操作五,string类非成员函数六,整形与字符串的转换 引言 string 就是我们常说的"…

如何对SQL Server中的敏感数据进行加密解密?

为什么需要对敏感数据进行加密? 近几年有不少关于个人数据泄露的新闻(个人数据通常包含如姓名、地址、身份证号码、财务信息等),给事发公司和被泄露人都带来了不小的影响。 许多国家和地区都出台了个人数据保护的法律法规&#…

Unity Animation--动画窗口指南(使用动画视图)

Unity Animation--动画窗口指南(使用动画视图) 使用动画视图 window -> Animation 即可打开窗口 查看GameObject上的动画 window -> Animation -> Animation 默认快捷键 Ctrl 6 动画属性列表 在下面的图像中,“动画”视图&am…

思科模拟器--2.静态路由和默认路由配置24.5.15

首先,创建三个路由器和两个个人电脑。 接着,配置两台电脑的IP,子网掩码和默认网关 对Router 0,进行以下命令: 对Router进行以下命令: 对Router2进行以下命令: 本实验完成。 验证:PC…

Vue3+ts(day06:路由)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/frontlearningNotes 觉得有帮助的同学,可以点心心支持一下哈(笔记是根据b站上学习的尚硅谷的前端视频【张天禹老师】,记录一下学习笔记,用于自己复盘,有需要学…

【ARMv8/v9 系统寄存器 5 -- ARMv8 Cache 控制寄存器 SCTRL_EL1 使用详细介绍】

关于ARM Cache 详细学习推荐专栏: 【ARM Cache 专栏】 【ARM ACE Bus 与 Cache 专栏】 文章目录 ARMv8/v9 Cache 设置寄存器ARMv8 指令 Cache 使能函数测试代码 ARMv8/v9 Cache 设置寄存器 关于寄存器SCTRL_EL1 的详细介绍见文章:【ARMv8/v9 异常模型入…

纯正英语新闻 5.15

seizing territory :夺取领土 battlefield:战场 shrinking:缩小 paramedic:医护人员 mercilessly destroy:无情地摧残 blown up:炸毁 northern outskirts :北郊 terrified:害怕 shelling&#xff…

西南大学计算机考研,选学硕还是专硕?西南大学计算机考研考情分析!

西南大学(Southwest University)是教育部直属,教育部、农业农村部、重庆市共建的重点综合大学,是国家首批"双一流"建设高校,"211工程"和"985工程优势学科创新平台"建设高校。现任党委书…

【嵌入式大赛应用赛道】机械手臂

电机 进步电机:它的转动是以确定的步数进行的,只要计算好脉冲数量和频率,就可以准确预测和控制电机的转动角度、速度以及停止的位置 伺服电机:将输入的电信号(如电压或电流指令)转换成轴上的精确旋转运动…

大模型算法(一):从Transformer到ViT再到LLaMA

单任务/单领域模型 深度学习最早的研究集中在针对单个领域或者单个任务设计相应的模型。 对于CV计算机视觉领域,最常用的模型是CNN卷积模型。其中针对计算机视觉中的不同具体任务例如分类任务,目标检测任务,图像分割任务,以CNN作…

【传知代码】VRT: 关于视频修复的模型(论文复现)

前言:随着数字媒体技术的普及,制作和传播视频内容变得日益普遍。但是,视频中由于多种因素,例如传输、存储和录制设备等,经常出现质量上的问题,如图像模糊、噪声干扰和低清晰度等。这类问题对用户的体验和观…

hive动态分区

hive动态分区概念:允许插入数据到分区表时,根据插入的数据内容自动创建相应的分区 1.启用动态分区功能 hive.exec.dynamic.partitiontrue; 2.分区字段设置 在insert语句中, 动态分区的字段必须放在select语句的末尾,hive会根据这个字段的值来创建分区目录 示例: --创建分区表…

几个排序器的verilog及其资源占用、延时分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 因为课题需要,调研了几个快速排序方法,并手写或者改进了若干待测试对象,包括记分板型冒泡排序(这个是别人的&#xff09…

树莓派|I2C通信

什么是I2C通信 I2C(Inter-Integrated Circuit)是一种串行通信协议,用于在集成电路(IC)之间传输数据。它由飞利浦公司(现在的恩智浦半导体公司)在20世纪80年代开发,并且成为了广泛应用于各种电子设备中的通…

Spring Security 6.x 系列【73】认证篇之同端互斥登录

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 概述2. 实现方案3. 案例演示3.1 内存会话3.1.1 并发控制流程分析3.1.2 功…

【35分钟掌握金融风控策略28】贷中模型体系策略应用

目录 贷中模型体系策略应用 信用模型体系和模型在策略中的应用 反欺诈模型体系和模型在策略中的应用 运营模型体系和模型在策略中的应用 贷中模型体系策略应用 在贷前模型部分已经讲过,贷前开发的很多模型是可以在贷中直接使用的。贷中与贷前的不同点在于&…

ubuntu升级python

添加Python官方PPA源 sudo add-apt-repository ppa:deadsnakes/ppa 执行会显示各个版本ubuntu可以安装哪些python版本 更新软件包索引 sudo apt update 安装需要版本Python sudo apt install python3.11 检查Python版本: which python11 /usr/bin/python3.11 设置为系统默认Pyt…

自定义一个starter

在Spring Boot中&#xff0c;创建一个自定义starter可以简化特定功能或组件的配置过程&#xff0c;让其他项目能够轻松地重用这些功能。 这里我们以自定义一个xxl-job的starter为例&#xff0c;介绍下如何简化配置。 添加依赖 <dependencies><dependency><gro…

STK中的光照计算模型

本文简要阐述STK中光照计算的模型。 在航天任务中&#xff0c;通常需要分析地面站、飞行器在一定时间内的光照情况&#xff0c;具体包括&#xff1a; 地面站处在光照区和阴影区的具体时间范围&#xff1b;考虑地形遮挡后&#xff0c;地面站的光照区和阴影区的变化情况&#x…