Linux/ext4/sqlite:在写入文件时触摸文件是否会导致竞争条件?

Linux/ext4/sqlite:在写入文件时触摸文件是否会导致竞争条件?

对于上下文:我需要能够可靠地更新在 ext4 文件系统上间歇性更新的某些 sqlite DB 文件的时间戳。

touch在写入数据库时​​使用该命令(更新最后修改时间)会失败,甚至更糟,导致数据丢失?

答案1

您确实可以touch打开文件而不会破坏其内容,因为文件系统将序列化对 inode 元数据的更新。

从应用的角度来看这是否安全则完全是另一回事,但它应该安全简单,因为即使读取文件也可以更新其元数据(即:当最后一次读取超过一天或不使用noatimerelatime或时lazytime)。

也就是说,如果 SQLite 用于mtime某些内部簿记,它可能会因您的元数据更改而感到困惑。如果使用触摸设置过去的时间戳,则尤其如此,这通常是一个坏主意。

相关内容