テキストファイルの末尾(最終行)を表示するには「tail」コマンドを使用します。
目次
「tail」コマンドの使い方(Linux)
「tail」コマンドを使用し、ファイルの末尾部分を表示します。
以下のコマンドは「anaconda-ks.cfg」ファイルのデータの末尾部分を表示した例となります。
「tail」コマンドのデフォルト表示は末尾から10行を表示します。
$ tail anaconda-ks.cfg zerombr # Partition clearing information clearpart --all --initlabel # System timezone timezone UTC --isUtc --nontp # Root password rootpw --iscrypted --lock almalinux $
ファイルの末尾データを行数指定で表示
以下、「-n」オプションを使用することで末尾データ表示を行数指定で実施することができます。
コマンド例では末尾3行のデータを表示しています。
$ tail -3 anaconda-ks.cfg # Root password rootpw --iscrypted --lock almalinux $
実行コマンドの末尾表示、行数指定
「tail」コマンドは実行コマンドでも末尾の結果を表示することができます。
実行コマンドもデフォルトで末尾10行を表示します。
実行コマンドで「tail」コマンドを表示する場合は「|」を使用します。
$ dmesg | tail [34644.673544] systemd[1]: Reached target Swap. [34644.674284] systemd[1]: Listening on Journal Socket. [34644.675390] systemd[1]: Starting Load Kernel Modules... [34644.862708] IPVS: ftp: loaded support on port[0] = 21 [34644.889864] IPVS: ftp: loaded support on port[0] = 21 [34645.198753] IPVS: ftp: loaded support on port[0] = 21 [42475.082648] IPVS: ftp: loaded support on port[0] = 21 [56664.178033] IPVS: ftp: loaded support on port[0] = 21 [63508.933008] IPVS: ftp: loaded support on port[0] = 21 [72788.518955] IPVS: ftp: loaded support on port[0] = 21 $
以下は行数指定で表示した例となります。
「tail」コマンド後に「-n」オプションを使用します。
以下では末尾3行を表示した例となります。
$ dmesg | tail -3 [56664.178033] IPVS: ftp: loaded support on port[0] = 21 [63508.933008] IPVS: ftp: loaded support on port[0] = 21 [72788.518955] IPVS: ftp: loaded support on port[0] = 21 $
デバッグ表示として利用ができる「-f」オプションが便利
「tail」コマンドでは「-f」オプションを利用することで、ファイルの更新をリアルタイムに表示することができます。
例えば以下のようなログメッセージをリアルタイムで監視したい時などに「-f」オプションを使用することができます。
動作確認などのデバッグ表示として利用することでエラーや障害などの切り分けにも利用することが多いです。
$ tail -f /var/log/messages Sep 11 01:27:58 almalinux rtkit-daemon[98]: The canary thread is apparently starving. Taking action. Sep 11 01:27:58 almalinux rtkit-daemon[98]: Demoting known real-time threads. Sep 11 01:27:58 almalinux rtkit-daemon[98]: Demoted 0 threads. Sep 11 02:01:39 almalinux systemd[1]: Starting dnf makecache... Sep 11 02:01:41 almalinux dnf[832]: AlmaLinux 8 - BaseOS 3.5 kB/s | 4.3 kB 00:01 Sep 11 02:01:42 almalinux dnf[832]: AlmaLinux 8 - AppStream 5.5 kB/s | 4.7 kB 00:00 Sep 11 02:01:43 almalinux dnf[832]: AlmaLinux 8 - Extras 4.4 kB/s | 3.8 kB 00:00 Sep 11 02:01:43 almalinux dnf[832]: Metadata cache created. Sep 11 02:01:43 almalinux systemd[1]: dnf-makecache.service: Succeeded. Sep 11 02:01:43 almalinux systemd[1]: Started dnf makecache. ------ このまま更新分がリアルタイムで表示される ------
「tail」コマンドオプション
「tail」コマンドのオプションは以下の通りとなります。
$ tail --help 使用法: tail [オプション]... [ファイル]... Print the last 10 lines of each FILE to standard output. With more than one FILE, precede each with a header giving the file name. FILE の指定がなかったり, - であった場合, 標準入力から読み込みます. Mandatory arguments to long options are mandatory for short options too. -c, --bytes=[+]NUM output the last NUM bytes; or use -c +NUM to output starting with byte NUM of each file -f, --follow[={name|descriptor}] output appended data as the file grows; an absent option argument means 'descriptor' -F same as --follow=name --retry -n, --lines=[+]NUM output the last NUM lines, instead of the last 10; or use -n +NUM to output starting with line NUM --max-unchanged-stats=N with --follow=name, reopen a FILE which has not changed size after N (default 5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files); with inotify, this option is rarely useful --pid=PID with -f, terminate after process ID, PID dies -q, --quiet, --silent never output headers giving file names --retry keep trying to open a file if it is inaccessible -s, --sleep-interval=N with -f, sleep for approximately N seconds (default 1.0) between iterations; with inotify and --pid=P, check process P at least once every N seconds -v, --verbose always output headers giving file names -z, --zero-terminated line delimiter is NUL, not newline --help この使い方を表示して終了する --version バージョン情報を表示して終了する NUM may have a multiplier suffix: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y. --follow (-f) を使用すると、tail はデフォルトでファイル記述子を追跡します。 このため tail で追跡しているファイルの名前が変更されたとしても、 tail は 元のファイルの終端を追跡し続けます。このデフォルトの動作はファイル記述子 ではなく、実際にある名前を持つファイルを追跡する場合には望ましくありませ ん (例: ログのローテーションなど)。そのような場合には --follow=name を使 用してください。これにより名前の変更、削除、作成などにあわせて名前のついた ファイルの末尾を追跡するようになります。 GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report tail translation bugs to <https://translationproject.org/team/> Full documentation at: <https://www.gnu.org/software/coreutils/tail> or available locally via: info '(coreutils) tail invocation'
「tail」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |