Hart Simha Asked: 2022-02-07 23:02:40 +0800 CST2022-02-07 23:02:40 +0800 CST 2022-02-07 23:02:40 +0800 CST Linux/ext4/sqlite:可以在写入文件时触摸文件以导致竞争条件吗? 772 对于上下文:我需要能够可靠地更新某些 sqlite DB 文件上的时间戳,这些文件会在 ext4 文件系统上获得间歇性更新。 写入数据库时使用touch命令(更新最后修改时间)会失败,甚至更糟,导致数据丢失吗? linux ext4 sqlite 1 个回答 Voted Best Answer shodanshok 2022-02-08T00:58:30+08:002022-02-08T00:58:30+08:00 您确实可以touch在不破坏其内容的情况下打开文件,因为文件系统将序列化更新到 inode 元数据。 如果从应用程序的角度来看这是安全的,那完全是另一回事,但它应该是安全的简单的,因为即使读取文件也可以更新其元数据(即:当最后一次读取超过一天或不使用时noatime,relatime或lazytime)。 也就是说,如果 SQLitemtime用于某些内部簿记,它可能会被您的元数据更改混淆。如果使用触摸设置过去的时间戳尤其如此,这通常是一个坏主意。
您确实可以
touch
在不破坏其内容的情况下打开文件,因为文件系统将序列化更新到 inode 元数据。如果从应用程序的角度来看这是安全的,那完全是另一回事,但它应该是安全的简单的,因为即使读取文件也可以更新其元数据(即:当最后一次读取超过一天或不使用时
noatime
,relatime
或lazytime
)。也就是说,如果 SQLite
mtime
用于某些内部簿记,它可能会被您的元数据更改混淆。如果使用触摸设置过去的时间戳尤其如此,这通常是一个坏主意。