Nginx 默认Log记录在$Nginx_home/logs/access.log里面,每次用户的请求都会追加到access.log后面,久而久之,access.log就会变得巨大,占用磁盘空间。所以就有了需求用来切割Nginx日志。使用shell脚本如下:
#!/bin/bash # This script run at 00:00 # The Nginx logs path logs_path="/usr/local/nginx/logs/" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log kill -USR1 `cat /usr/local/nginx/nginx.pid`
Q:假如把access.log改名为access.log_bak后,不重启nginx服务器,那么在新的请求到达nginx服务器后日志会记录到何处,是自动创建一个access.log还是把日志记录到改名后的文件?
A:答案为会记录到改名后的文件,因为nginx启动时会记录日志文件的Inode节点号,而通过mv的方式改名文件,并不会更改文件的inode节点号。所以会依然记录到改名后的文件。而如果改名access.log后,重新reload了Nginx程序,则会在启动时检测到access.log不存在,自动创建access.log文件。
时间: 2024-12-27 14:21:33