ログのエラー/警告を電子メールで送信するスクリプトを作成しています。 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