ログローテーションされたファイルの「tail -f」を実行するにはどうすればよいですか?


106

長時間実行されるシステムでは、通常、

$ tail -f /var/log/kern.log

またはこのような何かが開いています。

しかし、新しいメッセージが表示されなくなったため、そのようなコマンドを時々再起動する必要があります。

これは、ログファイルを置き換えるログローテーションジョブtail -fが「監視中」だったためだと思います。

この再起動の問題を回避するにはどうすればよいですか?

tail回転プロセスに気付き、正しいことを行うように呼び出すことができますか?

rsyslogdデフォルトで使用するUbuntu 11.04システムでこの問題に気付きました。)


回答:


162

-F代わりにオプションを使用してください。

tail -F /var/log/kern.log

この-Fオプションはtail、回転中に変化するiノード番号を使用する代わりに、ファイルへの変更をファイル名で追跡するように指示します。また、ファイルが存在しない場合、ファイルを開こうとし続けます。


7
素晴らしい、はい、私はそうです。(記録のために、これはGNUテールオプションです-GNUテールはもちろんUbuntuのデフォルトです)。
-maxschlepzig

あなたは正しいです:-/私はあなたの質問のUbuntuが単なる例であることに気づきませんでした。
andcoz

問題ではありません-完全性についてコメントしただけです(POSIXとは何かを調べたいと思うこともあります)。質問は確かにUbuntuに関するものでした。
maxschlepzig

1
tail -F /var/log/kern.log同等tail -f --follow=name --retry /var/log/kern.logですか?
Basj

1
@Basj -に従ってman7.org/linux/man-pages/man1/tail.1.htmlそれは同等だが
アンドレイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.