Log Unifier プログラムを作成しています。つまり、ログを生成するシステムがあります: my.log、my.log.1、my.log.2、my.log.3...
各反復で、特定のファイルから読み取った行数を保存して、次の反復でその場所から読み続けることができるようにします。
問題は、ファイルがいっぱいになると、ローリングすることです: 最後のログが削除されます... my.log.2 は my.log.3 になります my.log.1 は my.log.2 になります my.log は my.log になります.1 と新しい my.log が作成されます
もちろん、inode を使用してそれらを追跡することもできます。inode はファイルとほぼ 1 対 1 で対応しています。
私が「ほとんど」と言ったのは、次のシナリオを恐れているからです: 2 回の繰り返しの間に、いくつかのファイルが削除され (たとえば、ロギングが非常に高速であるとしましょう)、新しいファイルが作成され、いくつかのファイルの inode が削除されたばかりです。問題は、これらのファイルを古いファイルと間違えて、0 行ではなく (たとえば) 500 行目から読み取りを開始することです。
だから私はこれを解決する方法を見つけたいと思っています-ここに私が考えたいくつかの方向があります-あなたが私を助けるのを助けるかもしれません:
i ノード以外の別の 1 対 1 対応。
ファイルをマークする機能。chmod +x を使用してファイルを既存のファイルとしてマークすること、およびこれらのアクセス許可を持たない新しいファイルの場合-それらが新しいことはわかります-しかし、誰かが手動でアクセス許可を変更した場合、それは私のプログラムを混乱させるでしょう. 他にマークする方法があれば。
ファイルが削除されたときに削除されるファイルへのソフトリンクを作成することを考えました。これにより、どのファイルが削除されたかを知ることができます。
「作成日」を取得する方法
タイムスタンプ、atime、ctime、mtime を何らかの巧妙な方法で使用するなど、頭に浮かぶアイデアはすべて良いものです。どのファイルが新しいか、または 1 対 1 のファイルを作成するアイデアを知ることができる限り、ファイルへの対応。
ありがとうございました