tailが削除され、再生成されたログファイルとその親ディレクトリに自動的に再接続されるようにする方法

tailが削除され、再生成されたログファイルとその親ディレクトリに自動的に再接続されるようにする方法

servicemixインスタンス(パス=)--follow=nameでログファイルを表示するオプションと一緒にtailを使用しています。${smx_home}/data/log/servicemix.log

ServiceMixにはキャッシュなしで完全に再起動する「良い」機能があり、servicemix clean$ {smx_home} / dataディレクトリ全体も削除しているようです。

フォルダとログファイルが削除されると、次のメッセージが表示されます。

tail: data/log/servicemix.log: No such file or directory

Ctrl-Cを押して、次のようにテールコマンドを再起動する必要があります。

tail --follow=name data/log/servicemix.log

ServiceMixの「クリーンブート」がファイルだけでなくディレクトリ全体を削除し、初期inodeが無効であるため、問題が発生します。

削除されたログにtailを再接続する方法はありますか?

tailが機能しない場合、代替方法はありますか(例:moreまたは使用less)?

修正する:

-F --followまた、と様々な組み合わせをテストしました。--retry

tail --follow=name --retry data/log/servicemix.log

これも機能しません。

私の尾バージョンは

tail (GNU coreutils) 8.4

答え1

8.26より前のバージョンのcoreutilsでは、tailフォルダ内のファイルを削除し続けることはできないようです。あなたはそれを使用することができますless

less --follow-name +F data/log/servicemix.log

答え2

--retryにオプションを追加するか、--follow=nameこの組み合わせの略称を使用します-F。 tailにファイルがないというエラーが表示されますが、ファイルが作成されたら、新しいディレクトリで新しいファイルを見つけます。

完全な情報についてはマニュアルページをご覧ください。

答え3

一部の特定のバージョンのテールでは、バグのためこれは不可能です。

ディレクトリが削除されると、tailコマンドはファイルに再接続できません。以前の設定で以前にこの問題を再現できましたが、現在のバージョンで上記の回答を試すと効果がありました。したがって、上記の答えがうまくいかない場合は、tailのバージョンを確認してください。

関連情報