tail を使用した Bash での日次ログファイルの追跡

tail を使用した Bash での日次ログファイルの追跡

bashスクリプトを使用して現在の日付の名前を付けた複数のログファイルを監視するタスクがあります。 YYYY-MM-DD.log.

(1)ファイルをフォローしましたが、tail -fファイルの回転を処理できませんでした。

それにもかかわらず、tail -F $FILENAME最大24時間しかログを追跡できず、再起動が必要です。

私が達成したいのは、同様のものを作成してtail -F $CURRENTDATE永遠に実行し、深夜ごとに現在の日付の名前を付けた新しいログファイルに従うように切り替えることです。

しかし、変数は$CURRENTDATE動的ではないようです。crontab24時間ごとにスクリプトを実行せずにこれを実行する他の方法はありますか?たぶん、シンボルファイルや他のものを設定しますか?

(2) 同時にtail -f使用する場合、後続のファイルが失われるか、名前が変更された場合、どのシグナルが返されますか?実行中の例外をキャッチする方法。

ベストアンサー1

この変数は$CURRENTDATE思ったほど動的ではありません。tail -F $CURRENTDATEこの変数は、実行のためにコマンドを評価すると拡張されます。これは、コマンドの実行後に実行してみるとわかりpsます。出力には、現在の日付以外の値が表示されます$CURRENTDATE

$ CURRENTDATE=$(date +%Y%M%d.log)
$ tail -F $CURRENTDATE

$ ps -eaf|grep tail
saml      1171 13564  0 22:13 pts/4    00:00:00 tail -F 20130517.log

あなたが経験している問題は、通常、ほとんどのサーバーデーモン(Apache、Nginx、Jettyなど)がすべての現在の日付を名前付きファイルに書き込んでから、そのファイルを別の名前error.log(後でerror_20130517.log)に回転させる理由です。

error.logこれにより、同じコマンドを使用して継続的に監視できますtail -F error.log

おすすめ記事