2番目のファイルが作成されるタイミング(一致基準)を決定する最良の方法を見つけようとしています。コンテキストは監査ログの回転です。
毎時間監査ログを生成するディレクトリがある場合は、閉じた監査awk
ログに対して解析スクリプトを実行する必要があります。つまり、毎時間新しい監査ログが生成され、最大1時間分の情報を含む古い監査ログが閉じられます。新しいログファイルはそのファイルも閉じられ、新しいログファイルが生成されるまで保持されます。
bashシェルスクリプトを作成して使用した後、エントリを使用してfind /home/tomcat/openam/openam/log -name amAuthentication.* -mmin -60
10crontab
分ごとに実行できますが、残りはどのように作成するのかわかりません。
スクリプトがその検索内容を一時ファイルに保存し、実行されるたびにcrontab
新しい検索コマンドの内容を比較して変更すると、一時ファイルをawkスクリプトへの入力として使用することから始めることができると思います。スクリプトが完了したら、awk
新しい検索をファイルに保存します。
ある同僚は、処理されたファイルを表示するために古い「固定ビット」を使用することを提案しました。おそらくこれが続く道です。
答え1
これを試してみてくださいinotifywait
:
inotifywait -e close_write /home/tomcat/openam/openam/log/CURRENT_OPENED_LOG_FILE
答え2
最後に使用するスクリプトの先頭は次のとおりです。強力にしてロギングするにはもっと作業が必要ですが、一般的なアイデアを得る必要があります。
#!/bin/sh
# This script should be executed from a crontab that executes every 5 or 10 minutes
# the find below looks for all log files that do NOT have the sticky bit set.
# You can see the sticky bit with a "T" from a "ls -l".
for x in `find /home/tomcat/openam/openam/log/ -name "log-*" -type f ! -perm -1000 -print`
do
# Look for open files. For safety, log that we are skipping them
if lsof | grep $x > /dev/null; then
# create a log entry on why I'm not processing this file...
echo $x " is open"
else
# $x "is closed and not sticky"
# run the awk scripts to process the file!
echo $x " processing with awk..."
# Set the sticky bit to indicate we have processed this file
chmod +t $x
fi
done