2017-04-11 5 views
0

1つのUNIXスクリプトを作成して、私たちの仕事の1つのログが生成されているかどうかを確認しています。ログは前回のログが存在するかどうかを調べる検索条件。

2017 Apr 11 13:09:54:384 - Required information will be present here. 
2017 Apr 11 13:17:31:578 - Required information will be present here. 

我々は、ログが前の時間のために存在しているかどうかを確認しますさがす条件に立ち往生しているようにタイムスタンプを持つファイルに保存取得しています。

これを確認するステートメントを書く方法を教えてください。

答えて

2

をスクリプトを分岐することができます:ここで

grep -c "^$(date -d '-1 hour' '+%Y %b %d %H:')" 

は、dateコマンドは、ログファイルと一致するタイムスタンプを生成します。ログファイルのタイムスタンプはgrepです。 -cは、ファイルの一致する行の数を表示します。

+0

実際にはもっと短く見えます:grepは、日付/時刻文字列が、関連するログメッセージのいくつかの本体に誤って表示されるのを避けるために、各行の先頭でのみ検索するべきですおそらく異なる日付で... – ewcz

+0

@ewcz、はい。あなたは正しい。私の答えを更新しました。 – sat

1

それはおそらく少し汚いソリューションですが、前の時間の最初の「接頭辞」を構築することができ、すなわち、2017 Apr 11 12た後、どのように多くのログファイルの試合でラインチェック:そのtest.logと仮定すると

#get the prefix 
prefix=$(date -d'-1 hour' +'%Y %b %d %H') 

#count matching lines 
cnt=$(gawk -F':' "\$1==\"$prefix\"" test.log | wc -l) 
echo $cnt 

2017 Apr 11 12:09:54:384 - Required information will be present here. 
2017 Apr 11 13:17:31:578 - Required information will be present here. 

が含ま次いで上記変数cntの値が1(2017 Apr 11 12 dateコマンド収率場合)であろう。だから、あなたはgrep & dateを使用して... $cntに基づいて

+0

ありがとうございます。なぜあなたはそれを少し汚れた解決策と呼んだのですか?あなたが他のいくつかのapprochを提供することができれば、それは非常に役に立つでしょう。 – Wolfgang

+0

@Wolfgang私は、非常に堅牢ではないので、ちょっと汚いということを意味しました。たとえば、 'date'によって生成された日付/時刻がログの時刻と同じタイムゾーンにあると仮定している場合 - より組織的な解決策がこれらの可能な "驚き"を処理するPythonスクリプトなどを記述します。しかし、ログファイルが整形式であることが保証されていれば、解決策は大丈夫です。 – ewcz

+0

ありがとうEwcz。ログはこの形式でのみ生成されることが保証されています。 – Wolfgang

関連する問題