图文详解nginx日志切割的实现


Posted in Servers onJanuary 18, 2022

实现nginx的日志切割

(注:为什么要切割呢?因为当你用户访问量大的时候,可能日志也很大。)

《1》:ll /usr/local/nginx/logs/  查看日志 (注:有两个日志,一个是访问日志,另一个是错误日志。)

图文详解nginx日志切割的实现

《2》:tail -f /usr/local/nginx/logs/access.log  查看访问日志

图文详解nginx日志切割的实现

《3》:vim /opt/cut_nginx_log.sh  编写一个脚本

《4》:脚本内容:

#!/bin/bash
 
#cut_nginx_log.sh
 
datetime=$(date -d "-1 day" "+%Y%m%d")
 
log_path="/usr/local/nginx/logs"
 
pid_path="/usr/local/nginx/logs/nginx.pid"
 
[ -d $log_path/backup ] || mkdir -p $log_path/backup
 
if [ -f $pid_path ]
 
then
 
mv $log_path/access.log $log_path/backup/access.log-$datetime
 
kill -USR1 $(cat $pid_path)
 
find $log_path/backup -mtime +30 | xargs rm -f
 
else
 
echo "Error,Nginx is not working!" | tee -a /var/log/messages
 
fi

图文详解nginx日志切割的实现

注释:

#!/bin/bash

#cut_nginx_log.sh



datetime=$(date -d "-1 day" "+%Y%m%d")        //时间,date -d "-1 day"代表日期减1

log_path="/usr/local/nginx/logs"             //日志的存放位置

pid_path="/usr/local/nginx/logs/nginx.pid"   //进程的PID号,有PID号代表 进程还活着

[ -d $log_path/backup ] || mkdir -p $log_path/backup   //如果$log_path/backup不是一个目录则创

建$log_path/backup目录

if [ -f $pid_path ]                                //如果$pid_path是一个文件

then

mv $log_path/access.log $log_path/backup/access.log-$datetime  //那么移动旧日志的文件到新目录

下以此来实现分割

kill -USR1 $(cat $pid_path)                                    //USR1代表信号,他会给进程传一

个信号让进程生成一个新的日志

find $log_path/backup -mtime +30 | xargs rm -f                //查找30天前的日志并删除

else

echo "Error,Nginx is not working!" | tee -a /var/log/messages  //否则提示nginx is not working且追加到日志中

fi

(注:kill 信号,信号有64种。)

《5》:chmod +x /opt/cut_nginx_log.sh   给脚本添加执行权限

《6》:crontab -e   写计划任务

《7》:写入

*/5     *       *       *       *       /usr/sbin/ntpdate pool.ntp.org > /dev/null 2

>&1

0       0       *       *       *       /opt/cut_nginx_log.sh

图文详解nginx日志切割的实现

《7》:/opt/cut_nginx_log.sh  执行脚本

《8》:ls /usr/local/nginx/logs  查看日志目录下(注:下面中access.log是新的访问日志,backup里面是老的访问日志。)

图文详解nginx日志切割的实现

《9》:ls /usr/local/nginx/logs/backup/ 查看

图文详解nginx日志切割的实现

《10》:tailf /usr/local/nginx/logs/access.log   查看访问日志(注:tailf 是等同tail -f的)

图文详解nginx日志切割的实现

《11》:在浏览器中访问

《11》:tailf /usr/local/nginx/logs/access.log  在去访问,他下面会出现

图文详解nginx日志切割的实现

面试题讨论:

说明Nginx的访问日志记录在 access.log文件中。

1、如果将access.log重命名为a.log时,新产生的日志写到哪儿?为什么?

答案:日志将会写入到a.log 文件中,因为重命名后文件的 Inode,没有变化,文件系统是根据Inode查找文件的。

2、如果此时将 Nginx服务重启后,新产生的田志写到哪儿?为什么?

答案:日志将会写入到新的access.log文件中,因为重启时会加载Nginx的配置文件,配置文件中是通过文件名指定日志的,所以会创建新的日志。

总结

到此这篇关于图文详解nginx日志切割实现的文章就介绍到这了,更多相关nginx日志切割内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx反向代理多个服务器的实现方法
Mar 31 Servers
nginx反向代理时如何保持长连接
Mar 31 Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 Servers
Nginx配置Https安全认证的实现
May 26 Servers
nginx实现动静分离的方法示例
Nov 07 Servers
Apache Hudi集成Spark SQL操作hide表
Mar 31 Servers
Windows Server 2019 配置远程控制以及管理方法
Apr 28 Servers
阿里云 Windows server 2019 配置FTP
Apr 28 Servers
CentOS7环境下MySQL8常用命令小结
Jun 10 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 Servers
Apache自带的ab压力测试工具的实现
Jul 23 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 #Servers
使用 Apache 反向代理的设置技巧
NGINX 权限控制文件预览和下载的实现原理
Nginx虚拟主机的搭建的实现步骤
Jan 18 #Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 #Servers
教你快速构建一个基于nginx的web集群项目
Nov 27 #Servers
Linux安装apache服务器的配置过程
Nov 27 #Servers
You might like
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
python绘制多个子图的实例
2019/07/07 Python
Python Django 命名空间模式的实现
2019/08/09 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python实现字典嵌套列表取值
2019/12/16 Python
python实现图像拼接
2020/03/05 Python
python 利用toapi库自动生成api
2020/10/19 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
2016年春季运动会广播稿
2015/08/19 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python