Skip to main content

2.HTTP面试题

假设Apache产⽣的⽇志⽂件名为access_log,在apache正在运⾏时,执⾏命令mv access_log access_log.bak,执⾏完后,请问新的apache的⽇志会打印到哪⾥?

新的⽇志会在access_log.bak中。

在Linux/Unix系统中,文件的引用是通过inode(索引节点)来标识的,而不是文件名。当你执行 mv access_log access_log.bak时,文件系统实际上只是修改了 access_log这个文件名指向的inode,而并没有改变文件的inode本身。

Apache在启动时会打开一个文件句柄,这个句柄与inode关联。即使你重命名了文件,这个句柄仍然指向相同的inode。因此,Apache会继续将日志写入到已经重命名的 access_log.bak文件。

如果你重启Apache服务,它会重新读取配置,打开新的日志文件,因此新的日志会写入到新的 access_log文件,如果日志文件不存在则创建。