効率よく結果を出す法則とは……?

Linuxコマンド「tail」とオプションの使い方(ファイルの末尾の内容を表示する、ログを監視する)

「tail」コマンドを使うと、ファイルの末尾の内容を表示することができます。

-f オプションを使うことで、ログをリアルタイムに監視するコマンドとしても よく使われています。

 

以下から Linuxコマンド「tail」の具体的な使い方とオプションを解説していきます。

 

「tail」コマンドの基本

「tail」は以下のようにファイル名を指定して使います。

tail ファイル名

 

ファイルの末尾の内容を表示する

実際にコマンドを使ってファイルの末尾の内容を表示してみましょう。

 

その前に、まずはファイルを作成していきます。

vi コマンドなどでファイルの作成・編集ができますが、Cloud9 を使っている場合はコマンドを使わなくてもエディタを使って簡単に作成できます。

メモ

Cloud9 の登録方法はこちら

Cloud9 の使い方はこちら

 

「file1.txt」という名前のファイルを作成し、ファイルを開いて内容を

aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
jjj
kkk
lll
mmm
nnn

に編集し、保存します。

 

それでは このファイルの末尾の内容を確認してみましょう。コマンドは以下。

tail file1.txt

 

以下のようにファイルの内容の、一番下の内容が確認できました。

デフォルトでは10行分が表示されます。

 

他のディレクトリ(フォルダ)にあるファイルの末尾の内容を表示する

対象のファイルはパスで指定することができます。

メモ

パスの詳しい解説はこちら

 

例えば「directory1」の中にある「file1.txt」という名前のファイルの末尾の内容を表示する場合は、以下のコマンドになります。

tail directory1/file1.txt

 

ログなどのファイルに追記される内容をリアルタイムに監視する

-f オプションを使うことで、ログファイルなど、次々に追記されていくファイルの内容をリアルタイムに監視することができます。

 

実際にコマンドを使ってファイルを監視してみましょう。

以下のコマンドで、先ほど作成した「file1.txt」の監視を始めます。

tail -f file1.txt

 

コマンドを実行すると、このように現在のファイルの内容の、一番下の数行が表示された状態になります。

 

この状態のまま、別のタブを開いて以下のコマンドを実行します。これで「file1.txt」のファイルの一番下に「ooo」が追記されます。

echo "ooo" >> file1.txt
メモ

echo コマンドの詳しい使い方はこちら(作成中)。

 

最初のタブに戻ってみると、追記した内容が自動的に表示されていました。

 

監視をやめる場合は、キーボードの Ctrl + C を押して終了できます。

 

ここまでが「tail」コマンドの基本!

 

「tail」コマンドの応用

「tail」コマンドの理解をさらに深めたい方は以下もご覧ください。

 

複数ファイルの内容の末尾をまとめて表示する

半角スペースで区切って複数のファイルを指定することで、それらのファイルの内容の末尾をまとめて表示することができます。

 

例えば以下のようにすると、「file1.txt」と「file2.txt」と「file3.txt」の内容の末尾をまとめて表示することができます。

tail file1.txt file2.txt file3.txt

 

以下は実行結果の例。

 

特定の名前が含まれるファイルの内容の末尾をまとめて表示する

*(ワイルドカード)を使うことで、特定の名前が含まれているファイルの内容の末尾をまとめて表示することができます。

 

例えば以下のようにすると、ファイル名の末尾に「.txt」がついているファイルの内容だけをまとめて表示することができます。

tail *.txt

 

以下は実行結果の例。

 

-c(–bytes)オプション

-c--bytes)オプションをつけると、出力するバイト数を指定することができます。

 

ファイルの内容の末尾を10バイト分だけ出力するコマンド例

tail -c 10 file1.txt

 

-f(–follow)オプション

-f--follow)オプションをつけると、ファイルの内容を監視し、追記されたらリアルタイムに表示結果を更新することができます。

ログファイルの監視などに使います。

メモ

-f--follow)オプションの詳しい使い方は、このページの上のほうにある基本編に書きました。

メモ

-f--follow)オプションを使った場合、もし対象のファイル名が変更された場合は、引き続き変更後のファイルを監視します。

ログローテートなどで引き続き同じ名前のファイルで監視を続けたい場合は、-F オプションを使います。

 

-F オプション

-F オプションをつけると、ファイルの内容を監視し、追記されたらリアルタイムに表示結果を更新することができます。

ログファイルの監視などに使います。

メモ

-F オプションを使うと、もし対象のファイル名が変更された場合でも同じ名称のファイルで監視を続けます。

ログローテートなどで引き続き同じ名前のファイルで監視を続けたい場合などに使います。

対象のファイル名が変更されたときに、引き続き変更後のファイルを監視したい場合は -f--follow)オプションを使います。

 

–max-consecutive-size-changes オプション

指定した回数、ファイルのサイズ変更が検知されるまで読み込みを行います(デフォルト: 200)。

 

–max-unchanged-stats オプション

指定した回数、ファイルのサイズが変わらない場合、ファイル名が変更されていないかチェックします(デフォルト: 5)。

 

-n(–lines)オプション

-n--lines)オプションをつけると、出力する行数を指定することができます。

 

ファイルの内容の末尾を5行だけ出力するコマンド例

tail -n 5 file1.txt

 

ちなみにこれを省略して以下のように書くこともできます。

ファイルの内容の末尾を5行だけ出力するコマンド例(省略形)

tail -5 file1.txt

 

–pid オプション

--pid=プロセスID とオプションを指定すると、そのプロセスが終了したときに自動で tail コマンドも終了させることができます。

 

-q(–quiet, –silent)オプション

-q--quiet, --silent)オプションをつけると、複数ファイルを指定した場合などに出力結果に表示されるファイル名を 表示しないようにすることができます。

 

-r オプション

-r オプションをつけると、出力結果を逆の行から表示することができます。

一番下の行が最初の行、最初の行が一番下の行として表示されます。

メモ

-r オプションはBSD環境のみ使えます。

他の環境では tac コマンドで同じ動作を実現することができます。

 

–retry オプション

--retry オプションをつけると、ファイル読み込みが失敗した際に、再度 成功するまで読み込みを行います。

 

–sleep-interval オプション

--sleep-interval オプションをつけると、リアルタイムに監視しているファイルのチェックを指定した秒数間隔で行うことができます(デフォルト: 1)。

 

-v(–verbose)オプション

-v--verbose)オプションをつけると、常に出力結果にファイル名を表示することができます。

 

まとめ

以上、Linuxコマンド「tail」の使い方でした!

 

ここまでの内容をまとめておきます。

  • 「tail」コマンドでファイルの末尾の内容を表示することができる。
  • 対象のファイルはパスで指定できる。
  • -f オプションを使うことで、ファイルの内容変更をリアルタイムに監視することができる。