首页 > 系统相关 >nginx日志切割定时任务

nginx日志切割定时任务

时间:2024-07-21 10:57:57浏览次数:11  
标签:文件 log access nginx 日志 定时 localhost

目录

nginx进行日志切割的好处:

实现步骤:

1.给access.log日志文件重命名,并备份

2.编写定时日志脚本         

3.运行日志切割脚本

4.将日志切割脚本加入crontab定时任务

crontab定时任务配置讲解


nginx进行日志切割的好处:

  1. 便于管理和查询:随着时间的推移,Nginx 日志文件可能会变得非常大。将其切割成较小的、按时间段划分的文件,使得在需要查找特定时间段的日志时更加方便和高效。

  2. 控制存储空间:未切割的日志文件可能会迅速消耗大量的磁盘空间。通过定期切割并删除较旧的日志,可以有效地控制存储空间的使用。

  3. 提高处理效率:处理较小的切割后的日志文件比处理一个巨大的整体日志文件要快得多,特别是在进行日志分析、备份或数据挖掘等操作时。

  4. 方便备份和归档:切割后的日志可以更有组织地进行备份和归档,符合数据保留策略和合规要求。

  5. 避免单一文件损坏导致数据丢失:如果一个巨大的日志文件损坏,可能会丢失大量的日志数据。而切割后的多个较小文件,降低了这种风险。

  6. 更好地跟踪和监控:可以根据切割后的日志文件,更清晰地跟踪和监控系统在不同时间段的活动和性能。

实现步骤:

1.给access.log日志文件重命名,并备份

        在 Linux 系统中,当需要切割 Nginx 日志文件时(例如按天切割),一般需要先将当前日志文件移动并重命名,然后使用“nginx -s reopen”命令重新打开新的日志文件进行记录

[root@localhost logs]# ls                                
access.log  error.log  nginx.pid                                           

## nginx的日志文件是/logs/access.log  

[root@localhost logs]# mv access.log "access.log_$(date +"%Y-%m-%d")"
## 这条命令的作用是将当前的 access.log 文件重命名为 access.log_<当前日期> 的格式

[root@localhost logs]# nginx -s reopen

[root@localhost logs]# ls
access.log  access.log_2024-07-15  error.log  nginx.pid
##可以看到7月15的日志已经备份,再有新日志就会记录在access.log里,
 

2.编写定时日志脚本         

        在生产环境下,也就是工作中,日志切割主要以定时任务的形式来操作

[root@localhost ~]# mkdir myscripts/

[root@localhost ~]# cd myscripts/
[root@localhost myscripts]# vim cut_nginx_log.sh
## 创建myscripts文件夹,用来存放用户自己编写的脚本文件,编写cut_nginx_log.sh脚本

释:

脚本代码:
        #!/bin/bash
         # 定义日志目录和文件名 
        LOG_DIR="/opt/nginx/logs" 
        ACCESS_LOG="$LOG_DIR/access.log" 
        ERROR_LOG="$LOG_DIR/error.log"
         # 获取当前日期 
        CURRENT_DATE=$(date +%Y%m%d) 
        # 创建新的日志文件 
        touch "$ACCESS_LOG.$CURRENT_DATE" 
        touch "$ERROR_LOG.$CURRENT_DATE" 
        # 重命名旧的日志文件
         mv "$ACCESS_LOG" "$ACCESS_LOG.$CURRENT_DATE" 
        mv "$ERROR_LOG" "$ERROR_LOG.$CURRENT_DATE" 
        # 向 Nginx 主进程发送 USR1 信号,使其重新打开日志文件
         kill -USR1 $(cat /opt/nginx/logs/nginx.pid)
                                              

3.运行日志切割脚本

[root@localhost myscripts]# bash cut_nginx_log.sh 
## 运行bash脚本文件

[root@localhost myscripts]# yum install -y tree
## 安装tree,tree 是一个用于以树状图形式列出目录内容的命令行工具,能够清晰地展示目录和文件的层次结构。

[root@localhost logs]# tree ./

## 用tree 查看logs文件夹,看该目录的详细结构,可以看到access.log和error.log都因运行了日志切割脚本生成备份文件

4.将日志切割脚本加入crontab定时任务

[root@localhost ~]# crontab -e

## crontab -e 命令用于编辑当前用户的定时任务(Cron 任务)配置。

## 每天凌晨 1 点执行该脚本任务

crontab定时任务配置讲解

crontab 定时任务的配置格式如下:

其中,每个 * 代表的含义分别是:

  • 分钟(0 - 59)
  • 小时(0 - 23)
  • 日(1 - 31)
  • 月(1 - 12 或 JAN - DEC)
  • 星期(0 - 6 或 SUN - SAT,0 表示星期日)

以下是一些常见的配置示例:

  • 每 5 分钟执行一次任务:

    */5 * * * * command

  • 每天凌晨 1 点执行任务:

    0 1 * * * command

  • 每月 1 号中午 12 点执行任务:

    0 12 1 * * command

  • 每周一早上 8 点执行任务:

    0 8 * * 1 command

  • 每年 1 月 1 日 0 点执行任务:

    0 0 1 1 * command

请将 command 替换为您实际要执行的命令或脚本路径。

配置完成后,保存并退出编辑界面,定时任务就会按照您设置的规则生效。

标签:文件,log,access,nginx,日志,定时,localhost
From: https://blog.csdn.net/qq_45496140/article/details/140451087

相关文章

  • nginx 部署vue http、https
    nignx配置文件server{listen80;server_nameyour_domain.com;return301https://$server_name$request_uri;}server{listen443ssl;server_nameyour_domain.com;ssl_certificate/path/to/your/ssl/certificate;ssl_certificate_k......
  • Nginx系列-3 servername优先级和location优先级和常用正则表达式
    1.正则表达式和分组由于Nginx配置文件中经常出现正则表达式,因此本章节专门对常见的正则表达式进行简单介绍。[1]开始与结束^表示匹配输入字符串的开始$表示匹配输入字符串的结束[2]匹配次数?表示匹配0次或者1次+表示匹配1次或多次*表示匹配0从或多次{n}匹配n......
  • 玄机-第二章日志分析-mysql应急响应
    文章目录前言简介应急开始准备工作日志分析步骤1步骤2步骤3步骤4总结补充erro.log前言这里应急需要知道mysql提权的一些姿势,还有能够提权成功的前提。5金币就当复习一下了。这里考察的是mysql应急响应,我们应该是根据找flag的需求去就行,但是我做了之后发现......
  • 玄机-第二章日志分析-mysql应急响应
    目录前言简介应急开始准备工作日志分析步骤1步骤2步骤3步骤4总结补充mysql中的/var/log/mysql/erro.log记录上传文件信息的原因前言这里应急需要知道mysql提权的一些姿势,还有能够提权成功的前提。5金币就当复习一下了。这里考察的是mysql应急响应,我们应该是根据找flag......
  • JAVA零基础小白自学日志——第二十天
    文章目录1.为什么我们需要抽象类2.抽象类3.我们一起来抽象(有病,象也没招你)[1].抽象方法[2].为什么我们先说抽象方法呢?[3].需要明确的4.关于Object的题外话今日提要:抽象类你以为这几天看的内容都是多态?你太小看Java了,咱们来看看真正多态的入门1.为什么我们需要抽......
  • JAVA零基础小白自学日志——第十九天
    文章目录1.private(私有)2.static(静态)3.final(最终)[1].fianl修饰变量[2].fianl修饰方法[3].fianl修饰类[4].为什么需要fianl关键字修饰类和方法4.private\static\final的共同点5.同名变量6.方法重载和方法重写今日提要:private\static\final修饰词;同名变量;方法重载和方法......
  • NGINX的日常使用之负载均衡
    负载均衡在nginx中的使用文章目录目录负载均衡在nginx中的使用前言一、负载均衡是什么?二、负载均衡的类型和应用1.硬件负载均衡器:2.软件负载均衡器三、负载均衡的好处四、负载均衡在nginx中的使用1、基本的nginx负载均衡配置示例2、Nginx负载均衡的关键特性(1)N......
  • U3D定时执行
    InvokeRepeating和InvokepublicMaterial[]colors;floatspeed=5;//StartiscalledbeforethefirstframeupdatevoidStart(){//Invoke("AutoChangeColor",5);////启动5秒后开始被调用一次InvokeRepeating("Bounce",2,2);//启动2秒后开始被重复......
  • 使用Java和Elastic Stack进行日志分析
    使用Java和ElasticStack进行日志分析大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在现代企业中,日志分析是确保系统健康、进行故障排查和优化性能的重要环节。ElasticStack(ELKStack)是一个强大的工具集,包含Elasticsearch、Logstash和Kibana,能够有......
  • 宝塔面板下,如果redis服务意外停止,如何定时检测并恢复服务
    redis突然停止的原因有多种:1、内存不足,如果Redis使用的内存超过了服务器可用内存,操作系统会自动杀死Redis进程。2、服务器的资源限制(ulimit)比较低,Redis可能会因为无法打开足够的文件描述符而停止。3、其他一些要根据redis日志排查如果停止后,还可以手工正常启用redis,那可以考虑把sh......