Linux
linux 在嘗試重命名/刪除文件時是否有文件鎖定保護
我有一個每天啟動一個新程序的 cron 工作。該程序每 5 分鐘執行一次,並附加到日誌文件中。
另一個 cron 作業每 60 分鐘執行一次。它獲取日誌文件中的一些數據,清理它,創建一個新的日誌文件。這個清理過的日誌文件被導入到數據庫中。MySQL 防止重複條目,因此每個新的干淨日誌文件的前幾行都會被忽略。
一天結束時,我被 24 個清理過的日誌文件和一個原始日誌文件困住了。
如果我要通過首先將文件重命名為預處理來執行清理腳本,做我需要做的事情,然後刪除它,它是否會導致我的第一個 cron 腳本出現任何問題,該腳本每 5 次記錄到同一個文件分鐘?
我擔心的是原始日誌文件正在被寫入,而另一個 cron 任務正在嘗試重命名它。
作業系統:Debian 8
編輯:有趣。Cron 將寫入重命名的文件。
沒有文件鎖定機制來保護文件重命名或刪除,因為不需要它。在另一個程序打開文件時重命名甚至刪除文件,即使它主動寫入和/或讀取數據,也是無害的。
打開文件的程序不會看到任何區別,並且會透明地訪問重命名文件的原始數據,甚至訪問“已刪除”文件,而不會注意到文件已被刪除。實際刪除只會在該程序退出時發生。