tailコマンドの詳細解説
tailコマンドは、
UNIXおよび
Unix系のオペレーティングシステムで、テキストファイルやパイプラインからのデータの末尾部分を表示するために使用されるコマンドラインユーティリティです。主に、ログファイルのような、常に更新されていくファイルの最新情報を確認する際に利用されます。
基本的な使い方
tailコマンドの基本的な構文は以下の通りです。
bash
tail [オプション] <ファイル名>
デフォルトでは、指定されたファイルの末尾から10行を表示します。表示する行数や単位はオプションで変更可能です。
例えば、`filename`というファイルの末尾20行を表示するには、次のようにします。
bash
tail -n 20 filename
また、`foo`で始まるすべてのファイルの末尾15バイトを表示する場合は、以下のように指定します。
bash
tail -c 15 foo
さらに、ファイルの先頭から2行目以降を全て表示するには、`+`記号を利用します。
bash
tail -n +2 filename
古い構文について
一部の古いシステム(Solarisなど)では、`-20`のように、オプションと数値を直接繋げた構文も使われていました。しかし、これは現在では非推奨であり、
POSIX標準に準拠していません。`-f`オプションなど他のオプションとの併用もできません。
bash
tail -20 filename # 古い構文、非推奨
tail -50c filename # 古い構文、非推奨
ファイル監視機能
tailコマンドの最も便利な機能の一つに、`-f`(follow)オプションによるファイル監視があります。`-f`オプションを指定すると、tailコマンドはファイルの末尾を表示した後も、そのファイルを監視し続けます。ファイルに新しい行が追加されると、即座にその内容が表示されるため、ログファイルのリアルタイム監視に非常に便利です。
例えば、`/var/adm/messages`というログファイルを監視するには、以下のようにします。
bash
tail -f /var/adm/messages
監視を停止するには、`Ctrl+C`を押します。バックグラウンドで実行する場合は、`&`を付けてジョブコントロールを利用します。
`-F` オプション
`-f`オプションと似たものに、`-F`オプションがあります。`-f`はコマンド実行時に開いたファイルを監視しますが、`-F`はファイルのinodeを監視し、inode番号が変わるとファイルを再オープンします。これにより、ログローテーションが行われた場合でも、ローテーション後のファイルを追跡できます。
bash
tail -F /var/adm/messages
`-f`オプションではローテーションされた移動先のファイルを監視し続けるのに対し、`-F`オプションではローテーション後も指定したファイル名(`/var/adm/messages`)を監視し続ける点が主な違いです。
類似のプログラム
tailコマンドに似た機能を持つ、以下のようなプログラムも存在します。
CCZE: tailコマンドの出力をカラー表示する機能を追加したツールです。
pctail: CCZEと同様に、
Pythonで記述されたカラー表示対応のtailです。
root-tail:
X Window Systemのルートウィンドウに出力を表示します。
Inotail: Linuxのinotifyインターフェースを利用し、ファイル変更時にのみチェックを行うため、システム負荷が低いのが特徴です。
MultiTail: 複数のログファイルを同時に監視し、カラー表示、マージ、フィルタリング、スクロールバックなどの高度な機能を提供します。
関連コマンド
head: ファイルの先頭部分を表示するコマンドで、tailと対になる機能を提供します。
参考資料
tail (1) マニュアル JM Project
FreeBSD documentation for tail(英語)
tail(1) man page(SunOS リファレンスマニュアル)
tail(1) man page(HP-UX リファレンス)
これらの情報が、tailコマンドの理解と活用に役立てば幸いです。