私のbashバージョンはGNU bash、バージョン4.1.2(1)-release(x86_64-redhat-linux-gnu)です。
過去1時間にログファイルに追加された可能性があるパターンを検索しようとしています。フォーラムで提案された他の解決策を見てみましたが、私はうまくいきませんでした。助けてください。
これは私が試したことですが、私には効果がありません。
- grep "^$(date -d '-1 hour' +'%H')" /space/log/server.log grep 'エラー'
- 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
テストを経てうまく機能しました