今回はtailコマンドについて覚えておくべきオプションを掲載します。
tailコマンドは、テキストファイルの最後方を表示するコマンドで、デフォルトではファイルの後ろ10行分表示します。
ちなみにtailの逆の動作をするコマンドとして、headコマンドもあります。
ファイルが更新される度に表示し続ける
-f
オプションを追加すると、対象ファイルが更新される度に、新たに追加された最下行の内容を表示し続けます。
「ctrl」 + 「c」で終了するまで表示され続けます。
tailコマンドの基本で、ログ監視の際によく使用されます。
対象ファイル名が変更された場合も、変更後のファイルを表示し続ける
上記-f
オプションに対して、-F
オプションも存在していますが、これは表示対象ファイルの名前が変更された場合、名前を変更した後のファイルをそのまま表示し続ける事ができるオプションです。
例えば対象ファイルの名前にログローテートによって日付が追加された場合も、そのファイルを表示し続けることが出来ます。
指定したワードが存在している行のみ表示する
tailコマンドの後ろに| grep <対象ワード>
を追加すると、対象ワードと一致した単語が存在している行のみ表示します。
これはtailコマンドのオプションではありませんが、ログ監視時によく使われる手法として紹介しています。
例えばtail /var/log/messages | grep err
とすると、「err」という単語がある行のみ表示します。
/var/log/messagesファイル内からエラー内容を調べる時に、「error」というワードが「err」と短縮されている場合もあるため、こういった指定をしています。
なお、単語になっているワードのみを抜き出してくれるわけではないので、上記コマンドの場合「err」というワードを含んだ単語も引っかかってしまいますので、誤検知する事もあります。
表示する行数を指定する
-n
オプションを追加すると、表示する行数を指定できます。
指定する際の書式は、-n <数値>
です。
表示する文字数を指定する
上記オプションは行数の指定ですが、-c
オプションを使用すると、出力する文字数を指定できます。
書式は-n
オプションと同様-c <数値>
です。
複数ファイル指定した場合、ファイル名を表示させない
tailに対して複数ファイルを指定した場合、デフォルトでは各ファイル内容毎に先頭にファイル名が表示されますが、これを無効にしたい場合は、-q
を指定します。
なお、単体のファイルを直接指定した場合はファイル名は表示されませんが、指定した場合もファイル名を表示させたい場合は-v
オプションを使用します。
ファイルの内容を行を逆にして表示する
-r
オプションを指定した場合は、内容を逆から出力します。
どういうことかと言いますと、以下の通り表示する順番が逆となります。
tail test.txt
aaa
bbb
ccc
tail -r test.txt
ccc
bbb
aaa