Linuxでいくつかのプロセスが実行中のログファイルを監視しようとしています(ログエントリが発生したときに一緒にグループ化される) )。現在、私は、ログに記録されているファイルを開いて、inotify(またはラッパー)をポーリングして、それ以上ファイルを読み込めるかどうかをチェックしています。ログファイルを監視する良い方法はありますか?(linux/python)
これを行うにはもっと良い方法はありますか?おそらく、ファイルの読み込み/変更を抽象化したライブラリがありますか?
Linuxでいくつかのプロセスが実行中のログファイルを監視しようとしています(ログエントリが発生したときに一緒にグループ化される) )。現在、私は、ログに記録されているファイルを開いて、inotify(またはラッパー)をポーリングして、それ以上ファイルを読み込めるかどうかをチェックしています。ログファイルを監視する良い方法はありますか?(linux/python)
これを行うにはもっと良い方法はありますか?おそらく、ファイルの読み込み/変更を抽象化したライブラリがありますか?
あなた自身で行う場合は、次のようなことが考えられます。ファイルの変更を検出した場合は、ファイルのサイズを取得します。前回よりも大きい場合は、直前の「最後」の位置(前のサイズ)に移動してそこから読み取ることができます。
"tail -f"で十分ではないのはなぜですか? popenとパイプを使ってこれをPythonから処理することができます。
Generator Tricks For Systems Programmersは、このタイプの問題を解決するためにPython generatorsをどのように使用するかを示します。具体的には、(大)ログファイルを監視します。私はそれを読むことをお勧めします。
'select()'を使ってみましたか? – hochl
おそらく、更新またはポーリングの修正時間が最適な賭けです。 –
@hochl 'select'は、ファイルディスクリプタが読み書きできるかどうかをチェックしますが、ディスクリプタ(主にソケットの場合があります)が"ソース "を変更しているかどうかをチェックしません。 –