图文详解nginx日志切割的实现
目录
- 实现nginx的日志切割
- 面试题讨论:
- 总结
实现nginx的日志切割
(注:为什么要切割呢?因为当你用户访问量大的时候,可能日志也很大。)
《1》:ll /usr/local/nginx/logs/ 查看日志 (注:有两个日志,一个是访问日志,另一个是错误日志。)

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

《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

注释:
#!/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

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

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

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

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

面试题讨论:
说明Nginx的访问日志记录在 access.log文件中。
1、如果将access.log重命名为a.log时,新产生的日志写到哪儿?为什么?
答案:日志将会写入到a.log 文件中,因为重命名后文件的 Inode,没有变化,文件系统是根据Inode查找文件的。
2、如果此时将 Nginx服务重启后,新产生的田志写到哪儿?为什么?
答案:日志将会写入到新的access.log文件中,因为重启时会加载Nginx的配置文件,配置文件中是通过文件名指定日志的,所以会创建新的日志。
总结
您可能感兴趣的文章
- 01-07Tomcat部署Bolo动态博客
- 01-07图文详解nginx日志切割的实现
- 01-07如何解决swarm docker 端口不通问题
- 01-07详解nginx location指令
- 01-07如何解决docker http 500错误问题
- 01-07windows server 2008安装配置DNS服务器
- 01-07Linux上搭载Nginx负载均衡配置使用案例详解
- 01-07NGINX 权限控制文件预览和下载的实现原理
- 01-07Nginx防盗链与服务优化配置的全过程
- 01-07使用 Apache 反向代理的设置技巧


阅读排行
推荐教程
- 12-23linux中ftp无法访问怎么办
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 01-05Shell脚本去重的几种方法实例
- 12-22kvm虚拟机配置NAT端口转发的实现方法
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法




