質問: ログ監視コマンドに「tail -F」を使用しており、これを「less」へ移行できないか考えております。 現在は、ログファイルがローテートしても完全にエラーを監視したいため、このようにsh化しております。 ``` tail -F log.log |grep 'Error\|ERROR\|エラー\|異常' ``` また、エラーが多発した際はtmuxの検索機能を利用しているので、検索も使いたいです。 これらの機能をlessへ落とし込み、最終的にsh化を目指すと以下の実現可能な問題と、そうではない問題が挙げられると思います。 **実現可能** 1. 「tail -F 」でlogファイルを流すことができる 2. 検索機能はlessにあるのでtmuxに依存する必要はない 3. 「tail -F 」は「less --follow-name」でローテートに対応できる 4. 「|grep 'Error\|ERROR\|エラー\|異常'」のような機能は「&」を入力したらできそう?? **問題点** 1. 「|grep 'Error\|ERROR\|エラー\|異常'」ができたとしても、lessを起動してから叩かなければならない? 2. 最終的にsh化することができない? 「tail -F|grep」の運用でも良いのですが、最近は「less」の方が良いと聞いたので、実現可能かどうか教えていただいたいです。
回答: コマンドの追加インストールは必要ですが、代替案を紹介しておきます。 **multitail**というコマンドがあり、本来の使い方としては「複数のファイルに対して同時に`tail`出来る」のがウリですが、もちろん単一のファイルに対しても実行可能です。 その他の特徴として、正規表現を使ったフィルタリングやハイライトも可能です。 ``` $ multitail --retry -e "error|Error" -f tail.log ``` オプションについては`--retry`が`tail -F`相当、`-e "パターン"`で正規表現にマッチした行のみ表示されます。 コマンドのインストールはソースコードから行うか、メジャーなディストリビューションであればパッケージが用意されている場合もあるようです(CentOSならepel経由)。 なお、コメント欄で環境再構築時の懸念をされていますが、`tail`や`grep`をシステムに入れないのは個人的にあり得ないと思います。