图文详解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+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
centos8安装nginx1.9.1的详细过程
Aug 02 Servers
Nginx location 和 proxy_pass路径配置问题小结
Sep 04 Servers
Kubernetes部署实例并配置Deployment、网络映射、副本集
Apr 01 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
CentOS7环境下MySQL8常用命令小结
Jun 10 Servers
Linux在两个服务器直接传文件的操作方法
Aug 05 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
VMware虚拟机安装 Windows Server 2022的详细图文教程
Sep 23 Servers
ubuntu端向日葵键盘输入卡顿问题及解决
Dec 24 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
数据库相关问题
2006/10/09 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
php实现短信发送代码
2015/07/05 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
js鼠标经过tab选项卡时实现切换延迟
2017/03/24 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
Python实现Const详解
2015/01/27 Python
python三大神器之fabric使用教程
2019/06/10 Python
django数据库自动重连的方法实例
2019/07/21 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
给同学的道歉信
2014/01/16 职场文书
教师远程培训感言
2014/03/06 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
大学同学会活动方案
2014/08/20 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
承诺函格式模板
2015/01/21 职场文书
复活读书笔记
2015/06/29 职场文书
高中数学教学反思范文
2016/02/18 职场文书
Go timer如何调度
2021/06/09 Golang
SpringBoot集成Redis的思路详解
2021/10/16 Redis
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL
Java设计模式中的命令模式
2022/04/28 Java/Android
mysql查看表结构的三种方法总结
2022/07/07 MySQL