Unix& Linux文件并发读/写处理

时间:2017-04-29 05:09:18

标签: linux apache unix content-management-system

首先提供一些信息。

Web服务器文档根目录:/mySite/docroot/

CMS writes a **new** file index-new.html to a SAN/NAS filesystem (Linux/Unix): /mySite/docroot/

CMS writes to an **existing** file index-ex.html to a SAN/NAS filesystem (Linux/Unix): /mySite/docroot/

浏览器访问网络服务器,其中显示index-new.html& index.ex.html下的/mySite/docroot/

问题就在这里。

CMS编写index-new.html&amp ;;时的行为是什么? index-ex.html(仅50%完成),而Web服务器同时读取它们?

文件写入期间Linux / Unix是否自动锁定文件以避免其他进程读写?

如果是,Web服务器是否会等到锁定被释放,或者只是在检测到锁定时才返回错误?

如果不是,如何确保Web服务器发送完整地址的文件?

1 个答案:

答案 0 :(得分:0)

没有。文件写入不是原子的。

这里的基本思想是创建一个临时文件并重命名。重命名文件是原子的,所以会有一个"不存在"错误或正确命中。

此外,当覆盖现有文件时,Linux上的rename()调用或其他OS的equavilent调用将自动覆盖该文件。通过这种方式,您可以确保以完整的形式提供旧的或新的。