图文详解nginx日志切割的实现
这篇文章主要给大家介绍了关于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》:脚本内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/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 |
注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #!/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》:写入
1 2 3 4 5 | * /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的配置文件,配置文件中是通过文件名指定日志的,所以会创建新的日志。
总结
到此这篇关于图文详解nginx日志切割实现的文章就介绍到这了
原文链接:https://blog.csdn.net/m0_54434140/article/details/122489739