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のバージョンを確認してください。