ログを監視する際によく利用するtailコマンド。
以外と、普通に実行するのと「-F」でのリアルタイムでのログ監視以外はあまり知られてないのではなかろうか。
今回は、そんなtailコマンドで覚えているとちょっと役に立つ使い方を紹介する。
1.基本的な使い方
基本的には、以下のようにコマンドを実行することで指定したファイルの末尾から行(デフォルトでは10行)を抽出して表示してくれる。
tail ファイルPATH
[root@test-centos7 ~]# tail /var/log/messages
Jul 20 18:59:15 test-centos7 root: aaa
Jul 20 19:00:01 test-centos7 systemd: Starting Session 562 of user root.
Jul 20 19:00:01 test-centos7 systemd: Started Session 562 of user root.
Jul 20 19:01:01 test-centos7 systemd: Starting Session 563 of user root.
Jul 20 19:01:01 test-centos7 systemd: Started Session 563 of user root.
Jul 20 19:07:43 test-centos7 systemd-logind: Removed session 561.
Jul 20 19:07:46 test-centos7 systemd-logind: New session 564 of user root.
Jul 20 19:07:46 test-centos7 systemd: Starting Session 564 of user root.
Jul 20 19:07:46 test-centos7 systemd: Started Session 564 of user root.
Jul 20 19:07:53 test-centos7 systemd-logind: Removed session 564.
2.出力される行数を指定する
tailコマンドでデフォルトで表示される行数は10行だが、それを指定することができる。
tail -行数 ファイルPATH
[root@test-centos7 ~]# tail /var/log/messages
Jul 20 19:07:53 test-centos7 systemd-logind: Removed session 564.
Jul 20 19:10:01 test-centos7 systemd: Starting Session 565 of user root.
Jul 20 19:10:01 test-centos7 systemd: Started Session 565 of user root.
Jul 20 19:10:01 test-centos7 systemd: Failed to mark scope session-565.scope as abandoned : Stale file handle
Jul 20 19:16:03 test-centos7 systemd-logind: New session 566 of user root.
Jul 20 19:16:03 test-centos7 systemd: Starting Session 566 of user root.
Jul 20 19:16:03 test-centos7 systemd: Started Session 566 of user root.
Jul 20 19:16:07 test-centos7 root: aaa
Jul 20 19:16:09 test-centos7 root: aaa
Jul 20 19:16:10 test-centos7 root: aaa
[root@test-centos7 ~]# tail -5 /var/log/messages
Jul 20 19:16:03 test-centos7 systemd: Starting Session 566 of user root.
Jul 20 19:16:03 test-centos7 systemd: Started Session 566 of user root.
Jul 20 19:16:07 test-centos7 root: aaa
Jul 20 19:16:09 test-centos7 root: aaa
Jul 20 19:16:10 test-centos7 root: aaa
3.追記された行を自動的に表示させていく
これはよく利用される機能だと思う。
「-F(-fでも動作的には同じ)」を指定することで、ファイルに追記されると同時にコンソール上でも表示してくれる。
tail -F ファイルPATH
特定の文字列を含む行のみを出力させたい場合は、grepと組み合わせて利用すると良いだろう。
tail -F ファイルPATH | grep 抽出条件
なお、特定のプロセスが終了した場合、監視を終了させることもできる。
tail -F ファイルPATH --pid=対象のプロセスのpid
4.複数のファイルを同時に表示させる
tailコマンドでは、複数のファイルを指定することでそれらを同時に表示させることができる。
tail ファイルPATH1 ファイルPATH2 ...
「-F」と組み合わせて使用することもできる。
その場合、追記があった場合は以下のように出力される。
同じファイルを見ているかのようにする(ヘッダーにファイル名を出力させないようにする)場合は、「-q」オプションと組み合わせて使用すると良いだろう。
tail -Fq ファイルPATH1 ファイルPATH2 ...
2016/11/24 追記
5.頭から指定した行数を省く
以下のようにコマンドを実行することで、出力の頭から指定した行数を省いて出力させることが出来る。
tail -n +○ ファルPATH