我在寫一個Log Unifier程序。也就是說,我有一個生成日誌的系統: my.log,my.log.1,my.log.2,my.log.3 ...一對一對應的文件 - 在unix中 - 日誌文件
我想在每次迭代中存儲數量我從某個文件中讀取的行,以便在下一次迭代 - 我可以繼續從那個地方閱讀。
的問題是,當這些文件都滿了,他們推出: 最後的日誌被刪除 ... my.log.2成爲my.log.3 my.log.1變得my.log。 2 my.log變得my.log.1 和新my.log創建
我可以ofcourse讓他們的跟蹤,使用的inode - 這幾乎是一到一一對應的文件。
我說「差不多」,因爲我擔心以下情況: 在我的兩次迭代之間 - 某些文件被刪除(假設記錄速度非常快),然後創建新文件,並且一些文件中包含inode剛剛刪除的文件。現在的問題是 - 我會將這些文件誤認爲舊文件 - 並從500行(例如)開始讀取,而不是0.
所以我希望找到一種方法來解決這個問題 - 這裏有幾個方向我想過 - 這可能會幫助你:
除了inode以外的其他1對1對應關係。
標記文件的能力。我想過使用chmod + x將文件標記爲 現有文件,對於沒有這些權限的新文件 - 我將知道它們是新的 - 但是如果有人要手動更改權限,那會混淆我的程序。所以如果你有任何其他的方式來標記。
我曾想過如何創建指向刪除文件時被刪除的文件的軟鏈接。這將讓我知道哪些文件被刪除。
任何方式來獲得「創建日期」
想到的任何想法 - 也許使用時間戳,的atime,的ctime,修改時間以某種巧妙的方式 - 都將是很好的,只要他們將讓我知道哪些文件是新的,或者創建與文件一一對應的任何想法。
謝謝