今天继续给大家介绍Linux运维相关知识,本文主要内容是Nginx日志切割。

一、Nginx日志切割原因

在企业生产环境中,Nginx的web服务器每天都会产生大量的日志信息,并且Nginx本身不会对访问日志进行切割,这就导致了Nginx日志量不断增大,不利于后期对日志的访问。基于此,我们在生产环境中,需要使用shell脚本+crontab定时任务的方式对Nginx日志进行切割。

二、Nginx日志特性

在进行Nginx切割脚本编写前,我们必须先了解Nginx日志的一些特性。Nginx对于日志的记录,时使用了定位符进行定位,因此,在Nginx启动后,我们即使将Nginx日志移动到其他位置,Nginx本身会向移动后的日志文件继续写入日志信息,而不是严格根据配置文件内容,在日志文件处创建新的日志文件并进行写入。基于这一特性,我们不能编写将Nginx日志不断的移动或者重命名到其他位置的SHELL脚本视图实现Nginx日志切割。
我们可以执行命令:

ll /proc/【Nginx主进程PID】/fd/

来查看Nginx的日志标识符,如下所示:

从上图可以看出,该目录下有链接文件,指向的是Nginx的日志位置,我们将Nginx日志移动后,发现链接也会跟着改变,如下所示:

只有将Nginx重新启动后,Nginx日志才会丢失对该日志的定位,并且根据配置文件的内容重新创建Nginx日志。因此,我们在编写Nginx日志切割脚本时,当我们移动Nginx日志后,必须reload重启Nginx服务。

三、Nginx日志切割脚本

最后,根据上述原理,我们编写Nginx日志切割的脚本,如下所示:

#!/bin/bash
# 2022-02-19
# writed by pzz
# used to cut the nginx logSOURCE_LOG=/usr/local/nginx/logs/access.log
DESTINATION_LOG=/usr/local/nginx/backup/`date +%Y%m%d`
echo $DESTINATION_LOG
if [ ! -d $DESTINATION_LOG ];thenmkdir -p $DESTINATION_LOG
fi
mv $SOURCE_LOG $DESTINATION_LOG
/usr/local/nginx/sbin/nginx -s reload
echo "The log of the Nginx has been cut!"

上述脚本的原理与本文第二章介绍基本相同,就是尝试移动Nginx日志,并重启Nginx服务。
上述脚本写完后,我们还要将该脚本放入定时任务中,执行命令:

crontab -e

然后写入如下内容:

0 5 * * * /bin/bash /usr/local/nginx/nginx_log_cut.sh >> /usr/local/nginx/nginx_log_cut.log 2>&1

让该脚本每天5点对日志进行自动切割,这样,该脚本就会在每天5点自动执行,对Nginx日志进行切割了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

LNMP详解(十六)——Nginx日志切割相关推荐

  1. linux 日志按大小切割_nginx入门详解(六)- 日志切割

    上一章讲解了nginx的目录加密功能,本章重点介绍nginx的日志切割. 笨办法学linux:nginx入门详解(五)- 目录加密​zhuanlan.zhihu.com 在第二章,我们探讨了nginx ...

  2. element布局容器大小_Flutter完整开发实战详解(十六、详解自定义布局实战)

    本篇将解析 Flutter 中自定义布局的原理,并带你深入实战自定义布局的流程,利用两种自定义布局的实现方式,完成如下图所示的界面效果,看完这一篇你将可以更轻松的对 Flutter 为所欲为. 文章汇 ...

  3. linux 命令详解 十六

    十七. xargs命令: 该命令的主要功能是从输入中构建和执行shell命令.            在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给e ...

  4. 数字音频总线A2B开发详解十六(A2B-一主一从:ADAU1701作为全新Slave板的DSP)

    作者的话 继续A2B的开发,我做了一块以ADAU1701为DSP的Slave板,这颗DSP可以做2进4出,也就是说,输入这块,这个Slave不仅能播Master过来的音乐,还可以自己进2路输入,输出则 ...

  5. IgH详解十六、双主站

    IgH支持双主站,只需要在配置文件中,配置双主站的MAC地址即可. 启动主站后,可以看到两个主站. IgH分别创建了EtherCAT0和EtherCAT1两个设备,分别对应双主站. 根据主站个数初始化 ...

  6. TypeScript详解十六:类型声明(declare)

    目录 前言 一.类型声明的作用? 1.1 declare 关键字 1.2 示例 二.常见的几种类型声明 2.1 普通类型声明 2.2 外部枚举 2.3 命名空间 三.类型声明文件 3.1 模拟类型声明 ...

  7. Windows 网络服务架构系列课程详解(六) ---利用NLB群集实现WEB服务器的可靠性...

    Windows 网络服务架构系列课程详解(六) -----利用NLB群集实现WEB服务器的可靠性   实验背景: 在大型网络环境中存在这样一种情景,公司内部的FTP服务器出现故障或脱机了,而且不能快速 ...

  8. 元宇宙技术普及读本重磅问世 详解十大技术 把脉数字经济 前瞻产业布局

    转自 元宇宙共识圈 王恩东.倪光南.沈昌祥.郑纬民--四位中国工程院院士联袂力荐 倪健中.姚前.李正茂.朱嘉明.肖风.敖然等权威专家一致推荐 汇聚元宇宙技术专家及产业一线佼佼者倾力撰写 元宇宙技术普及 ...

  9. 12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间

    - 12.10 Nginx访问日志 - 12.11 Nginx日志切割 - 12.12 静态文件不记录日志和过期时间# 12.10 Nginx访问日志 - 日志的格式- vim /usr/local/ ...

  10. nginx日志切割并使用flume-ng收集日志

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...

最新文章

  1. fastjson到底做错了什么?为什么会被频繁爆出漏洞?
  2. 软件测试职业培训中心,软件测试工程师就业班
  3. SCOM 2012系列⑨单台服务器拓扑监控
  4. 敲代码就是一把梭_2020必看!开发五年的大佬日常工作中所使用的java代码技巧...
  5. wxWidgets:wxListbook类用法
  6. 人一生中最大的遗憾应该是什么
  7. 《花落红尘》:对两性社会非爱即恨的文学消解
  8. php5.3+for+linux,Centos 安装 nginx + php5.3
  9. MSSQL手札四 MSSQL的函数
  10. RHEL7.X双网卡绑定
  11. Mathtype公式编辑器常用快捷键
  12. java: 找不到符号 报错
  13. 电脑给手机开热点后,手机可以上网,但是电脑却不能上网了
  14. 【BZOJ】【P3110】【ZJOI2013】【K大数查询】【题解】【树套树】
  15. python是个坑_Python 有什么不为人知的坑?
  16. Jill Rides Again UVA - 507(求最大子序列和)
  17. 设计模式七大原则总结
  18. 四五线城市可以做什么项目?
  19. 【Python】 调用百度地图API抓取西安市小区信息
  20. 网线线序及网线转RS232—— DB9线序

热门文章

  1. Python List pop()方法
  2. 史上最全最白话RNN原理
  3. 从零实现深度学习框架——理解正则化(二)
  4. 【突发】解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso
  5. 一文读懂响应式编程到底是什么?
  6. 全球稀缺的Kaldi学习资料,《Kaldi语音识别实战》给补上了!
  7. 《深入剖析Android系统》第9章RIL补充配图
  8. Ext JS+Android+SSH整合开发Web与移动SNS
  9. 分享程序员成长故事 解析IT职场困惑
  10. 19【推荐系统5】NeuralCF