grep は過去 1 時間の間にログファイル内のパターンを探します。

grep は過去 1 時間の間にログファイル内のパターンを探します。

私のbashバージョンはGNU bash、バージョン4.1.2(1)-release(x86_64-redhat-linux-gnu)です。

過去1時間にログファイルに追加された可能性があるパターンを検索しようとしています。フォーラムで提案された他の解決策を見てみましたが、私はうまくいきませんでした。助けてください。

これは私が試したことですが、私には効果がありません。

  1. grep "^$(date -d '-1 hour' +'%H')" /space/log/server.log grep 'エラー'
  2. grep -E "^($(date-d '-1時間' '+%H')|$(date'+%H')):[0-9]{2}:[0-9]{2 }" /space/log/server.log | grep 'エラー'

私のサンプルログファイルは次のとおりです。

[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R java.lang.NullPointerException 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:48) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:69) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at java.lang.reflect.Field.set(Field.java:670) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.GeneratedMethodAccessor2124.invoke(Unknown Source) – 

過去1時間のパターンをログファイルから検索し、電子メール通知を送信したいと思います。スクリプトは毎時cronを介して実行するようにスケジュールされています。

このサンプルファイルにエラーはありません。このファイルでエラーと例外を検索します。デフォルトでは、このファイルのパターンを時間ごとに検索してメールを送信したいと思います。

これに関して私を助けてください。ついています。

ベストアンサー1

d=`date +%m"/"%d"/"%y" "%H  -d "1 hour ago"|awk -F "/" 'OFS="/"{sub("0","",$1);sub("0","",$2);print }'`

awk -v d="$d" '$0 ~ d {print $0}' file

テストを経てうまく機能しました

おすすめ記事