「tail -f」は「less + F」よりも効率的ですか?


34

この記事では、を使用less +Fする理由をいくつか指摘しましたtail -f。理由のほとんどは機能に関するものであり技術的な理由でありません:less +Fファイルを強調表示、検索、ナビゲートできます。

どの程度の技術的な理由?

私の知る限りでは、lessファイルを更新するために、各1秒しばらくポーリングを使用するtailように、POSIXは、定義された 1秒間スリープコピー利用可能である任意のバイトそのループを使用します。これで十分ですが、POSIXは実装でより効率的な方法を使用することも推奨しました。少なくともGNU tailinotifyを使用するため、より効率的です。

less また、ファイルの内容をメモリに保持するため、数ギガバイトのような巨大なファイルでは、コンピューターの速度が低下する可能性があります。

だから、他のものがあり、技術を使用する理由はtail -fオーバーはless +F

回答:


37

あなたは主な点をカバーしたと思います:less +F多くのシステムtail -fではファイルの終わりのみを読み取りますが、ファイル全体を読み取るシステムでも、少なくともファイル全体を保持しませんが、ファイル全体を読み取りますメモリ内。そのless +Fため、非常に大きなファイルには実用的ではありません。ただし、実行することができますless -n +F引き起こす、less行番号を表示しないコストで、ファイルの端部のみを読み取ること。

ボンネットの下で、間less -n +Ftail -fの主な違いは、つまり、tail一方でそれは、即座に新しいデータを表示することができますいくつかのプラットフォーム(例えば、Linux上ではinotify)上のファイル変更通知サービス、使用してless新しいデータを表示するために1秒かかる場合がありますがループで新しいデータをチェックし、チェック間でスリープするためです。

もう一つの違いless +Fとはtail -fつまりless、入力フィルタを呼び出しますが、通常のログファイルへの影響はありませんことを。

有利な技術的な違いはless +F-Sオプションを使用して画面幅で行を切り捨てることができるのに対し、tail長さに関わらず行全体を表示する以外に選択肢がないことです。

インターフェイスに関しては、を使用することにはそれほど利点はありませんless。 tail -f何かが起こったときに気付くのに便利です。バックグラウンドで実行することもできます。何かが発生し、ファイルをさらに詳しく調べたい場合はless、別のターミナルで開くことができます。

複数のファイルを視聴したい場合は、マルチテール最適です。単一ファイルの場合でも、マルチテールにはフィルタリングや色付けなどの追加機能があります。


ファイルが非常に大きい場合、「-n 99.99p + F」を小さくすると、ファイル全体の読み取りが少なくなりますか?
cuonglm

1
@cuonglmああ、そうだね。それだけless -nで十分です。それはシークからエンド、そしてリードバックの戦略をあまり使用しません。
ジル「SO-悪であるのをやめる」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.