このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:ファイルの先頭や末尾を表示するコマンド

ファイルの先頭や末尾を表示するコマンド

 Linux でログファイルや設定ファイルを確認するとき、ファイルの中身すべてを見るのではなく、先頭や末尾の一部分だけを確認できれば効率的です。特に巨大なログファイルでは、最新の記録がある末尾を確認することが多く、ファイルの先頭部分を確認して形式や構造を把握することもよくあります。

 このような場合に役立つのが head コマンドtail コマンド です。head はファイルの先頭部分を、tail は末尾部分を表示します。両者を活用すれば、必要な箇所を素早く確認でき、システム運用やトラブルシューティングに大いに役立ちます。

1.head コマンド

1.1. 基本概要

 head コマンドは、ファイルの先頭部分だけを表示します。デフォルトでは 10 行を表示しますが、オプションで表示行数を変更できます。

書式

head [オプション] [ファイル名]

1.2. 主なオプション

オプション説明
-n 行数先頭から指定した行数を表示する。
-c バイト数先頭から指定したバイト数を表示する。

1.3. 使用例

例: /etc/passwd の先頭 5 行を表示

[user@rocky9 ~]$ head -n 5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

1.4. 他コマンドと組み合わせ

パイプと併用すると、別コマンドの出力結果の先頭だけを表示できます。

例: 実行中のプロセス一覧から先頭 3 行を表示

[user@rocky9 ~]$ ps -ef | head -n 3
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0  9月05 ?      00:00:02 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root           2       0  0  9月05 ?      00:00:00 [kthreadd]

2.tail コマンド

2.1. 基本概要

 tail コマンドは、ファイルの末尾部分を表示します。デフォルトでは 10 行を表示しますが、オプションで行数や監視モードを指定できます。

書式

tail [オプション] [ファイル名]

2.2. 主なオプション

オプション説明
-n 行数末尾から指定した行数を表示する
-fファイルの内容を監視し、追記されるたびに表示する(ログ監視で便利)
-c バイト数末尾から指定したバイト数を表示する

2.3. 使用例

例: /var/log/secure の末尾 8 行を表示

[user@rocky9 ~]$ sudo tail -n 8 /var/log/secure
[sudo] user のパスワード:
Sep  7 11:24:16 rocky9 su[5654]: pam_unix(su-l:session): session opened for user root(uid=0) by user(uid=1000)
Sep  7 11:26:19 rocky9 su[5654]: pam_unix(su-l:session): session closed for user root
Sep  7 11:29:28 rocky9 sudo[5724]:    user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/bin/find /home/user -atime +365 -exec rm {} ;
Sep  7 11:29:28 rocky9 sudo[5724]: pam_unix(sudo:session): session opened for user root(uid=0) by user(uid=1000)
Sep  7 11:29:28 rocky9 sudo[5724]: pam_unix(sudo:session): session closed for user root
Sep  7 11:48:32 rocky9 pkexec[5776]: pam_unix(polkit-1:session): session opened for user root(uid=0) by user(uid=1000)
Sep  7 11:48:32 rocky9 pkexec[5776]: user: Executing command [USER=root] [TTY=unknown] [CWD=/home/user] [COMMAND=/usr/libexec/gvfsd-admin --spawner :1.16 /org/gtk/gvfs/exec_spaw/1 --address unix:path=/run/user/1000/bus --dir /run/user/1000]
Sep  7 11:48:36 rocky9 polkitd[741]: Operator of unix-session:2 successfully authenticated as unix-user:user to gain TEMPORARY authorization for action org.gtk.vfs.file-operations for unix-process:3077:112134 [/usr/bin/nautilus --gapplication-service] (owned by unix-user:user)

2.4. 他コマンドと組み合わせ

: プロセス一覧の末尾 4 行を表示

[user@rocky9 ~]$ ps -ef | tail -n 4
root        6232       2  0 16:37 ?        00:00:00 [kworker/0:2-events]
root        6233       2  0 16:37 ?        00:00:00 [kworker/1:1-events_freezable_pwr_ef]
user        6236    3656  0 16:38 pts/0    00:00:00 ps -ef
user        6237    3656  0 16:38 pts/0    00:00:00 tail -n 4

3.head と tail の使い分け

コマンド用途特徴
headファイルの先頭部分を確認初期設定やファイル形式の確認に有効
tailファイルの末尾部分を確認ログファイルの最新情報確認に有効

まとめ

  • head はファイルの先頭部分を確認するコマンド、tail は末尾部分を確認するコマンド。
  • デフォルトはどちらも 10 行だが、-n オプションで行数を指定可能。
  • tail の -f オプションはログ監視に必須テクニック。
  • 他コマンドの出力と組み合わせることで、必要な範囲だけを効率的に確認できる。