Linux

Linux/ext4/sqlite:可以在寫入文件時觸摸文件以導致競爭條件嗎?

  • February 7, 2022

對於上下文:我需要能夠可靠地更新某些 sqlite DB 文件上的時間戳,這些文件會在 ext4 文件系統上獲得間歇性更新。

寫入數據庫時使用touch命令(更新最後修改時間)會失敗,甚至更糟,導致數據失去嗎?

您確實可以touch在不破壞其內容的情況下打開文件,因為文件系統將序列化更新到 inode 元數據。

如果從應用程序的角度來看這是安全的,那完全是另一回事,但它應該是安全的簡單的,因為即使讀取文件也可以更新其元數據(即:當最後一次讀取超過一天或不使用時noatimerelatimelazytime)。

也就是說,如果 SQLitemtime用於某些內部簿記,它可能會被您的元數據更改混淆。如果使用觸摸設置過去的時間戳尤其如此,這通常是一個壞主意。

引用自:https://serverfault.com/questions/1092871