
ご存知かもしれませんが、catコマンドは、標準入力を介してファイルのコンテンツ全体を表示するために使用されます。ただし、場合によっては、ファイルの最後の部分を印刷する必要があります。 LinuxおよびUnixでは、tailコマンドを使用して、標準出力を使用してファイルの最後の10行(デフォルト)を表示します。
テールコマンドは、新しく追加された行を表示できるため、ファイルの監視と分析によく使用されます。この機能は主に、随時更新されるログやその他のファイルを表示するために使用されます。
このチュートリアルでは、いくつかの実用的な例を使用して、Linuxでtailコマンドを使用する方法を学習します。テールオプションについても詳しく説明します。
テールコマンドの構文
次の行は、tailコマンドの構文を示しています。
tail [OPTION]... [FILE]...
OPTION
なし またはFILE
、tailコマンドはSTDINからの入力を受け入れます。したがって、STDINでは、10行を超えて入力すると、最後の10行のみが表示され、headコマンドはtailコマンドとは正反対になります。
Tailコマンドは、1つ以上の入力ファイル名(FILE
)を受け入れることができます 。
1)tailコマンドを使用してファイルの最後の10行を表示する
オプションなしで、入力ファイルの最後の10行を表示するtailコマンド。
次の例では、tailコマンドは「file1.txt」ファイルの下位10行を表示します。
$ tail file1.txt
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
2)特定の(制限された)行数を表示する
特定の行数のみを表示する場合は、-nオプションを使用する必要があります。
3つの異なるオプションを使用して、行数を制限できます。
次の3つのコマンド(-n100
、-n 100
、-100
)'/var/log/apache2/error.log'ファイルの最後の100行を表示します:
$ tail -n100 /var/log/apache2/error.log
または
$ tail -100 /var/log/apache2/error.log
または
$ tail -n 100 /var/log/apache2/error.log
3)複数のファイルを表示する方法
引数として指定すると、Tailコマンドは複数のファイルから表示できます。次に、各ファイルの最後の10行と、ファイルの名前を表示するヘッダーを出力します。
$ tail file1.txt file2.txt
==> file1.txt <==
memtest86+_multiboot.bin
System.map-2.6.38-12-generic
System.map-2.6.38-13-generic
System.map-2.6.38-8-generic
vmcoreinfo-2.6.38-12-generic
vmcoreinfo-2.6.38-13-generic
vmcoreinfo-2.6.38-8-generic
vmlinuz-2.6.38-12-generic
vmlinuz-2.6.38-13-generic
vmlinuz-2.6.38-8-generic
==> file2.txt <==
smi.conf
snmp
sound
speech-dispatcher
ssh
ssl
sudoers
sudoers.d
sysctl.conf
tr command
ヘッダー('==>file1.txt<=='および'==>file2.txt <==')を出力したくない場合は、-q
でクワイエットモードを使用できます。 、--quiet
または--silent
オプション。このオプションは、ファイルを結合するために使用できます。
$ tail -q file1.txt file2.txt
引数としてファイル名が1つしかない場合でも、常にヘッダーを出力する場合は、-v
を使用できます。 または--verbose
オプション
$ tail -v file1.txt
4)ファイルの最後の特定のバイトを表示する
ファイルの最後の特定のバイトを表示するには、-c
を使用します または--bytes
オプション。
次のtailコマンドは、file2.txtファイルの最後の30バイトを出力します。
$ tail -c 30 file2.txt
sudoers.d
sysctl.conf
sysctl.d
または、 -c +number
を使用することもできます バイトnumber
から始まるすべてを出力します 。
$ tail -c +300 file1.txt
5)ファイルの変更を監視する
-f
を使用します または--follow
ファイルの変更を監視するためのオプション。このオプションは、ログファイルの監視とトラブルシューティングに非常によく使用されます。
次のコマンドは、「/ var / log/Xorg.1.log」ファイルの端末での最後の10件の変更を表示します。
$ tail -f /var/log/Xorg.1.log
[ 86.774] (**) Option "xkb_layout" "us"
[ 86.774] (**) Option "xkb_options" "terminate:ctrl_alt_bksp"
[ 86.774] (II) Toshiba input device: (II) is tagged by udev as: Keyboard
[ 86.774] (II) Toshiba input device: (II) device is a keyboard
[ 88.453] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 88.453] (II) Vision stereo.
[ 102.094] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
-f
オプションは常に追加されたデータを待ち、それ自体で終了することはありません。 Ctrl+C
を押す必要があります 終了します。
-n
を使用して、テール出力の最後の3行を表示してみましょう。 およびf
オプション。
$ tail -n3 -f /var/log/Xorg.1.log
[ 102.094] (II) Vision stereo.
[ 540.435] (II) Axis 0x1 value 1158 is outside expected range
See https://wayland.freedesktop.org for details
-fq
を使用する オプションで、複数のファイルからの変更を監視できます。
$ tail -fq /var/log/Xorg.1.log file2.txt
-s
を使用 または --sleep-interval
(デフォルトは1秒)、反復間のスリープ間隔を調整できます。
$ tail -f -s 4 /var/log/Xorg.1.log
上記のように-f
オプションでは、シェルはそれ自体では終了しませんが、プロセスが--pid
で終了した後に終了するようにコマンドに指示できます。 オプション。
PID 4309のプロセスが終了するとすぐに、コマンドは終了します。
$ tail -f file2.txt --pid=4309
--retry
を使用 オプションを使用すると、ファイルにアクセスできなくなった場合でも、ファイルにアクセスできなくなった場合でも、ファイルを開こうとし続けることができます。アクセス可能になると、出力が表示されます。
$ tail -f file2.txt --retry
6)パイプでテールを使用する
tailコマンドは、他のコマンドとの間でパイプ処理して、最適化された結果を生成できます。
次の例では、lsコマンドを使用して、すべてのファイルとディレクトリを一覧表示し、すべてのディレクトリを一番上に一覧表示します。
$ ls -l /etc | tail | sort
drwxr-xr-x. 2 root root 4096 Mar 3 08:15 yum.repos.d
drwxr-xr-x. 2 root root 4096 Mar 3 08:17 yum
drwxr-xr-x. 2 root root 4096 Sep 25 14:54 xinetd.d
drwxr-xr-x. 4 root root 4096 Sep 25 14:54 xdg
drwxr-xr-x. 6 root root 4096 Sep 25 14:54 X11
lrwxrwxrwx. 1 root root 12 Dec 19 15:43 yum.conf -> dnf/dnf.conf
-rw-r--r--. 1 root root 1204 Nov 11 19:08 virc
-rw-r--r--. 1 root root 1982 Nov 11 19:08 vimrc
-rw-r--r--. 1 root root 28 Sep 25 14:51 vconsole.conf
-rw-r--r--. 1 root root 642 Dec 9 2016 xattr.conf
特定のファイルタイプのリクエストを監視する場合は、次のコマンドを使用します。
$ tail -f /var/log/apache/myvirtualhost.log | grep .jpg
次の例では、output tailコマンドがパイプ処理され、sortコマンドを使用して、「continent.txt」のコンテンツをアルファベット順に並べ替えます。
$ tail -n 5 continent.txt | sort
Africa
Antarctica
Asia
Australia
Europe
結論
これで、tailコマンドとそのオプションを使用してテキストファイルの一番下の行を表示する方法を見てきました。読んで楽しんでいただければ幸いです。以下のコメントセクションに提案を残してください。