我在写一个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,修改时间以某种巧妙的方式 - 都将是很好的,只要他们将让我知道哪些文件是新的,或者创建与文件一一对应的任何想法。
谢谢