nginx日志切割脚本 —— 筑梦之路

2024-04-16 06:36

本文主要是介绍nginx日志切割脚本 —— 筑梦之路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#!/bin/bash  # 定义Nginx日志目录  
LOG_DIR=/www/server/nginx/logs  # 获取上一天的时间,格式为YYYY-MM-DD  
YESTERDAY_TIME=$(date -d "yesterday" +%F)  # 归档日志的目录,按月创建,如2023-10  
LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")  # 定义需要切割的日志文件名称列表,这里以access.log为例  
LOG_FILE_LIST="access.log"  # 循环处理日志文件  
for LOG_FILE in $LOG_FILE_LIST; do  # 如果归档目录不存在,则创建该目录  [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR  # 将日志文件移动到归档目录,并在文件名后加上上一天的时间戳  mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}  
done  # 发送USR1信号给Nginx进程,使其重新打开日志文件  
kill -USR1 $(cat $LOG_DIR/nginx.pid)
  1. 定义日志目录和需要切割的日志文件:脚本首先定义了Nginx的日志目录LOG_DIR和需要切割的日志文件名称列表LOG_FILE_LIST。在这个例子中,我们只处理了access.log,但你可以根据需要添加更多的日志文件,如error.log等。

  2. 获取上一天的时间:使用date命令获取上一天的时间,并格式化为YYYY-MM-DD的形式,存储在变量YESTERDAY_TIME中。

  3. 创建归档日志目录:按月创建归档日志的目录,目录名称为当前年月,如2023-10。如果该目录不存在,则使用mkdir -p命令创建它。

  4. 切割并归档日志文件:通过循环处理日志文件列表中的每一个文件。对于每个文件,我们将其移动到归档目录,并在文件名后加上上一天的时间戳,以便于区分和管理。

  5. 重新打开日志文件:最后,我们通过发送USR1信号给Nginx进程来通知其重新打开日志文件。Nginx在接收到USR1信号后,会关闭当前的日志文件并打开新的日志文件进行记录。这样,我们就可以实现日志文件的自动切割和归档了。

你可以将上述脚本保存为一个.sh文件,比如cut_nginx_logs.sh,并赋予其执行权限(chmod +x cut_nginx_logs.sh)。然后,你可以通过cron定时任务来定期执行这个脚本,以实现日志的自动切割和归档。

此外,你还可以根据需要对脚本进行定制。例如,你可以修改LOG_DIRLOG_FILE_LIST变量来适应你的实际环境。你也可以修改归档目录的命名规则和日志文件的命名规则,以满足你的特定需求。

 

这篇关于nginx日志切割脚本 —— 筑梦之路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908034

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应