head / tail
『head』はファイルの先頭、『tail』は末尾の内容を表示するコマンドです。特に『tail -f』はログファイルの末尾をリアルタイムで監視する用途で頻繁に使われます。
構文
head [オプション] [ファイル...] tail [オプション] [ファイル...]
オプション一覧
| オプション | 概要 |
|---|---|
| head ファイル | ファイルの先頭10行を表示します。 |
| head -n N ファイル | 先頭N行を表示します。 |
| head -c N ファイル | 先頭Nバイトを表示します。 |
| head -n -N ファイル | 末尾N行を除いて全行を表示します。 |
| tail ファイル | ファイルの末尾10行を表示します。 |
| tail -n N ファイル | 末尾N行を表示します。 |
| tail -c N ファイル | 末尾Nバイトを表示します。 |
| tail -f ファイル | ファイルの末尾を監視し、追記されるたびにリアルタイムで表示します。 |
| tail -F ファイル | -f と同様ですが、ファイルが削除・再作成されても追跡し続けます。 |
| tail -n +N ファイル | N行目以降を表示します(先頭N-1行をスキップ)。 |
サンプルコード
以下のファイルを例に説明します。
~/project/data.csv
id,name,score 1,Alice,85 2,Bob,72 3,Charlie,91 4,Diana,68 5,Eve,95 6,Frank,80 7,Grace,88
ファイルの先頭3行を表示します。
head -n 3 data.csv id,name,score 1,Alice,85 2,Bob,72
ファイルの末尾3行を表示します。
tail -n 3 data.csv 5,Eve,95 6,Frank,80 7,Grace,88
CSVのヘッダー(1行目)をスキップして2行目以降を取得します。
tail -n +2 data.csv 1,Alice,85 2,Bob,72 3,Charlie,91 4,Diana,68 5,Eve,95 6,Frank,80 7,Grace,88
『/etc/passwd』の先頭3行を確認します。
head -n 3 /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin
ログファイルをリアルタイムで監視します(Ctrl+C で終了)。
tail -f /var/log/nginx/access.log
ローテーションされるログも追跡し続けます。
tail -F /var/log/app.log
パイプと組み合わせて、エラーログの最新10件だけを表示します。
grep "ERROR" app.log | tail -n 10
概要
『$ tail -f』はサーバーのログ監視でほぼ毎日使うコマンドです。複数ファイルを同時に監視したい場合は『$ tail -f ファイル1 ファイル2』のように複数指定できます。さらに強力なログ監視ツールとして『multitail』や『lnav』なども存在します。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。