`less +F` は `tail -f` の上位互換機能として利用できる

2021-02-25Bash

はじめに

例えば、ログファイルから最新の情報を閲覧するための方法として tail コマンドが利用できます。

tail -f のようにオプションを指定することでログファイルを監視し、コンテンツが追加されたときに自動的にターミナル上に出力させることができます。

tail コマンドを使わず、 less コマンドでも同じような機能が提供されており、若干高機能です。

less コマンドの意外と知られていない機能を紹介します。

検証環境

$ uname -moi
x86_64 x86_64 GNU/Linux

$ bash -version | head -n 1
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

$ less --version | head -n 2
less 458 (POSIX regular expressions)
Copyright (C) 1984-2012 Mark Nudelman

テキストファイルを tail コマンドで監視してみる

テキストファイルの末尾にコンテンツが追加されたら、ターミナル上に出力させてみます。

先ほどと同じ手順で、ファイルを監視してみます。

# まずはファイルを作成
$ seq 1 10 > test.txt

# ファイルを監視します。
$ less +F test.txt
1
2
3
4
5
6
7
8
9
10

先程同様、別のターミナルを開き、ファイル末尾にコンテンツを追記します。

$ seq 20 30 >> test.txt

もともとのターミナルに以下の行が追加で出力されているはずです。

20
21
22
23
24
25
26
27
28
29
30

tail -fless +F でなにか違いはあるの?

ほぼ一緒なんですね。

less コマンドの監視は、途中で中断しバッファ内を検索する事ができます。

先程の less +F コマンドを実行中のターミナルに戻り、 ctrl + c キーを押してみましょう。
すると、通常の less コマンドと同じ操作ができるようになります。(上下に移動、 / で検索、など)

ここで F ( shift + f キー ) を押すと、再度 tail -f と同じモードに戻ります。

less test.txt コマンドで立ち上げた状態で shift + f でモード切替できる

更にいうと、 shift + f での tail モード切替は、普通に less を立ち上げた状態で利用可能です。

ですので利用用途としては

  1. less test.txt でファイルを見ていた
  2. ちょっと監視したくなった
  3. shift + f で監視モードに切り替え
  4. 監視結果を眺める

という感じの使い方になります。

ひとこと

tail -f をすると、大量にログが来た場合に流れていってしまいます。

less +F で眺めておき、不具合調査時に問題となるログが見つかったタイミングで ctrl + ctail モードを止めて調査に入る、といった使い方が想定できます。

とはいえ、多分この機能忘れて tail -f しているんだろうなぁ。

2021-02-25Bash