正常情况下,我们给一个日志文件做备份。通常会 mv access.log access.log.0313 ,之后创建一个新的 touch access.log 会认为是备份完成了:旧的日志文件已成为备份,新的文件用来存储新的访问信息。但是不是这样的,在 linux 上其实每个文件对应的是一个节点【 inode 节点 】,在开启进程后,系统会一直向文件对应的节点一直写入数据。即使我们修改了文件名、创建了新的文件,我们不去告诉 nginx 声明新的日志文件的节点位置,仍然是会向旧的日志文件写入的。
解决方法:kill -USR1 进程号 //就会写入新的日志文件了。