2017-03-31 20 views
1

おはようございます。私は、さまざまな時に実行されるいくつかのスクリプトとして、一日を通してデータが取り込まれるログファイルを持っています。巨大なファイルではありませんが、ログエントリにはエントリ時のタイムスタンプがありません。tail -fログファイルのタイムスタンプ

この場合、私は通常PuTTYセッションを通じてサーバーにログインし、そのログファイルに対してtail -fを実行するので、これらのスクリプトが開始されていることがわかります。私がしたいのは、tail -fを変更して、画面に表示される各項目のタイムスタンプを含めることです。私は以下を使用しました:

tail -fスケジューラ_ date '+%m%d%y' .log |

ここで問題となるのは、各行がログファイルに入る時刻ではなく、tailコマンドのタイムスタンプを使用することです。

以下のケースをいくつか見直しましたが、私が見つけたものは何も探していません。どんな助けもありがとう。

How to pipe tail -f into awk

https://users.cs.cf.ac.uk/Dave.Marshall/PERL/node241.html

答えて

0
tail -f "scheduler_$(date '+%m%d%y').log" | perl -pe 's/^/$_=qx(date +%T_); chomp; $_/e' 

qx外部date +%T_コマンドを呼び出します。その出力は変数$_に格納されます。 chompは、末尾の改行文字を$_から削除します。その後、$_が代入に返されます。

私はあなたのコマンドの最後の%はタイプミスで、秒で交換する必要がありますと仮定し、私は%H:%M:%Sためabbreveationである、%Tを書きました。

パフォーマンスの問題ならば、あなたはこのような行ごとの新しい日付のプロセスなしで行うことができます。

tail ... | perl -pe 'BEGIN { use POSIX "strftime" } s/^/strftime "%T_", localtime/e' 
関連する問題