2016-10-05 6 views
1

私は非常に大きなログファイルを持っています。ログファイルには、サービスのログメッセージのログが入っています。私は外部コマンドでサービスを再起動した後、再起動メッセージの最後の発生からこのログファイルを尾引きし、正しい再起動手順を確認するために以下のメッセージをチェックする必要があります。私はPythonでメッセージを分析しているので、最後のオカレンスだけを見つけてファイルが必要な場合は、出力を1行ずつチェックし、必要なものをすべて読み込むと接続を閉じるだけです。UNIXシェル、tail -fから最後の出現パターン

.... # lots of previous data 
[timestamp] previous message 
[timestamp] Rebooting... # from tis point i need to track messages 
[timestamp] doing thing 
[timestamp] doing other thing 
[timestamp] doing final thing # final point, reboot successful 
[timestamp] service activity message # 

このテーリングはどのように実行できますか?

tail -f <from last Rebooting... message> 
+2

あなたの質問は何ですか? – Siguza

答えて

2

、寛大なバッファ値を与える逆エキス、

$ tail -1000 file | tac | awk '1,/Rebooting/' | tac 

やリバース、おそらく!p; /Rebooting/{p=1}

+1

OPは 'tail -f'を使ってファイルを書いているので、このように動作するかどうかはわかりません。もしそうなら、あなたの答えに '-f'フラグを含めるべきです! – Aaron

1

でのようなものawkスクリプトを置き換える:

awkを使用しています
tail -fn +$(awk '/Rebooting/ { line = NR } END { print(line) }' log) log 

をlaの行番号を見つけるパターンの発生が確認され、その行からテールが始まります。

これでもファイル全体がスキャンされます。

あなたが本当にpythonからやっているのであれば、おそらくpythonで逆のファイルを直接検索すると良いでしょう。

関連する問題