過去30分間のgrepエントリを記録します。

過去30分間のgrepエントリを記録します。

ログのエラー/警告を電子メールで送信するスクリプトを作成しています。 30分ごとに転送したいのですが、新しいアイテムがある場合にのみ転送したいです。過去30分間で何が問題なのか、どうすればわかりますか?

ログのタイムスタンプは次の形式に従います。

<2016年8月1日午後2時15分29秒MDT> <エラー内容...>

これまでのスクリプトは次のとおりです。

#!/bin/bash
cat /var/log/logfile.log | egrep -i "error|warning" | tee -a /tmp/log.tmp

"get only last 30 min of errors" | mail -s "Errors/Warning" [email protected]

タイムスタンプ(2016年8月1日午後2:15:29 MDT)をepoch時間に変換してから、現在のepoch時間と比較できますか?それとも、sed / awk / perlを使用して過去30分を取得する方法はありますか? ?

ベストアンサー1

時代に変換するには、次の文を使用できます。

# date +%s -d"Aug 1, 2016 2:15:29 PM MDT"
1470082529

EpochをUTCに変換するには、次のものを使用できます。

# date -d @1470082529
Tue Aug  2 00:45:29 IRDT 2016  #### on Linux Box

# date -r 1470082529
Tue Aug  2 00:45:29 IRDT 2016 ###on BSD box

おすすめ記事