GNU/Linux >> Linux の 問題 >  >> Linux

Linuxテールコマンドの例

Linuxのtailコマンドは、ファイルの最後の部分を出力します。さらなるエントリのためにファイルを開いたままにするオプションがあります。これにより、イベントが発生したときにログをリアルタイムで確認できるログファイルを操作するのに非常に便利です。

1。 Linuxテールコマンド構文

tailコマンドの構文は次のとおりです。


$ tail [OPTION]... [FILE]...

すべてのオプションとファイル名はオプションです。

2。ファイルが提供されていない場合、tailは何をしますか?

末尾にファイル名を指定しない場合、またはハイフン(-)として指定しない場合は、標準入力が読み取られます。

3。ファイルの最後の10行を読み取る

オプションを指定しない場合、テールはファイルの最後の10行を読み取ります。


# tail error.log
2019-10-29 11:31:09.887840 [INFO] [16169] [APVH_recipes_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_recipes_Suphp73.sock.pid].
2019-10-29 11:31:09.887968 [INFO] [16169] [APVH_recipes_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_recipes_Suphp73.sock
2019-10-29 11:31:09.896280 [INFO] [16169] [APVH_recipes_Sulsphp73:] add child process pid: 27035, procinfo: 0x2c5e2b0
2019-10-29 11:31:09.896396 [INFO] [16169] [APVH_recipes_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_recipes_Suphp73.sock.pid].
2019-10-29 11:31:17.182067 [INFO] [16169] [APVH_golangd_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_golangd_Suphp73.sock.pid].
2019-10-29 11:31:17.182116 [INFO] [16169] [APVH_golangd_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_golangd_Suphp73.sock
2019-10-29 11:31:17.182991 [INFO] [16169] [APVH_golangd_Sulsphp73:] add child process pid: 27067, procinfo: 0x447cff0
2019-10-29 11:31:17.183048 [INFO] [16169] [APVH_golangd_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_golangd_Suphp73.sock.pid].
2019-10-29 11:31:20.641690 [INFO] [16169] [149.56.101.239:45604] [ACL] Access to context [/] is denied!
2019-10-29 11:31:27.245789 [INFO] [16169] [198.199.83.232:46876] [ACL] Access to context [/] is denied!
# 

4。 Linuxテールコマンドオプション

短いオプション ロングオプション 説明 ファイルの最後のKバイトを出力します。 「-c+K」を使用して、各ファイルのK番目から始まるバイトを出力できます。 ファイルが大きくなるにつれて追加されたデータを出力します。 -Fを指定すると、「– follow =name –retry」と同じになります 最後の10行ではなく、最後のK行を出力します。または、「-n + K」を使用して、K行目から出力します。 ファイル名を示すヘッダーを出力しない ファイルにアクセスできない場合はファイルを開こうとし続けます 常にファイル名を示すヘッダーを出力します バージョン情報を出力して終了します。
-c –bytes =K
-f –follow [={name | describeor}]
-n –lines =K
-q –静か、–静か
–再試行
-s –sleep-interval =N -fとともに使用して、反復の間に約N秒間(デフォルトは1.0)スリープします。
-v –verbose
–バージョン
  • Kの最初の文字(バイト数または行数)が「+」の場合は、各ファイルの先頭からK番目の項目から始めて印刷します。それ以外の場合は、ファイルの最後のK項目を印刷します。
  • >
  • Kには乗数の接尾辞を付けることができます:b 512、kB 1000、K 1024、MB 1000 * 1000、M 1024 * 1024、GB 1000 * 1000 * 1000、G 1024 * 1024 * 1024など。T、Pの場合、E、Z、Y。
  • –follow(-f)を使用すると、tailはデフォルトでファイル記述子に従うようになります。つまり、tailedファイルの名前が変更されても、tailはその終わりを追跡し続けます。このデフォルトの動作は、ファイル記述子(ログローテーションなど)ではなく、ファイルの実際の名前を実際に追跡する場合には望ましくありません。
  • その場合は–follow=nameを使用します。これにより、テールは、名前の変更、削除、および作成に対応する方法で、名前付きファイルを追跡します。

5。 Linuxテールコマンドの例

テールコマンドの使用例をいくつか見てみましょう。

5.1)テール出力の行数を制限する

-nまたは–linesオプションを使用して、テール出力の行数を制限できます。


# tail -n 5 error.log

# tail --lines=5 error.log

オプション値に+プレフィックスを使用すると、ファイル内のその行番号から出力が開始されます。


# wc -l error.log
27360 error.log

# tail -n +27358 error.log
2019-10-29 13:09:35.142604 [INFO] [16169] [APVH_javastr_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_javastr_Suphp73.sock
2019-10-29 13:09:35.144320 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 18132, procinfo: 0x367c520
2019-10-29 13:09:35.144389 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].

# tail --lines=+27358 error.log
2019-10-29 13:09:35.142604 [INFO] [16169] [APVH_javastr_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_javastr_Suphp73.sock
2019-10-29 13:09:35.144320 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 18132, procinfo: 0x367c520
2019-10-29 13:09:35.144389 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].
#

5.2)テール出力のバイト数を制限する

-cまたは–bytesオプションを使用して、ファイルの末尾から指定されたバイトを出力できます。


# tail -c 100 error.log
 [16169] [APVH_android_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
# tail --bytes=100 error.log
 [16169] [APVH_android_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
# 

オプション値とともに+を使用すると、そのバイトのファイルデータがコンソールに出力されます。


# ls -ltr error.log
-rw-r--r--. 1 nobody nobody 3475359 Oct 29 13:15 error.log
# tail -c +3475350 error.log
ock.pid].
#

5.3)複数のファイルを使用するLinuxテールコマンド

複数のファイル名を渡すことができ、出力にはファイル名の後に出力が続くヘッダーがあります。


# tail -n 2 error.log error.log.2019_10_27
==> error.log <==
2019-10-29 13:17:24.356633 [INFO] [16169] [APVH_golangd_Sulsphp73:] add child process pid: 19670, procinfo: 0x27af560
2019-10-29 13:17:24.356789 [INFO] [16169] [APVH_golangd_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_golangd_Suphp73.sock.pid].

==> error.log.2019_10_27 <==
2019-10-27 20:26:31.050022 [INFO] [16169] [176.9.99.9:34084] [ACL] Access to context [/] is denied!
2019-10-27 20:26:31.216835 [INFO] [16169] [176.9.99.9:34118] [ACL] Access to context [/] is denied!
#

サイレント出力には-qオプションを使用できます。複数のファイルからの出力をマージすると便利です。


# tail -n 2 -q error.log error.log.2019_10_27
2019-10-29 13:18:44.095709 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 19947, procinfo: 0x4312b50
2019-10-29 13:18:44.095766 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].
2019-10-27 20:26:31.050022 [INFO] [16169] [176.9.99.9:34084] [ACL] Access to context [/] is denied!
2019-10-27 20:26:31.216835 [INFO] [16169] [176.9.99.9:34118] [ACL] Access to context [/] is denied!
#

5.4)ファイルの変更を監視する

-fオプションを使用して、ファイルの変更を監視できます。これは、tailコマンドで最も広く使用されているオプションです。ログをリアルタイムで追跡してデバッグすると便利です。


[root@li1197-217 logs]# tail -f error.log 
2019-10-29 13:22:31.719103 [INFO] [16169] [APVH_cultwpc_Sulsphp73:] add child process pid: 20640, procinfo: 0x384a9a0
2019-10-29 13:22:31.719172 [INFO] [16169] [APVH_cultwpc_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_cultwpc_Suphp73.sock.pid].
2019-10-29 13:22:32.176946 [INFO] [16169] [APVH_android_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
2019-10-29 13:22:32.176979 [INFO] [16169] [APVH_android_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_android_Suphp73.sock
2019-10-29 13:22:32.177901 [INFO] [16169] [APVH_android_Sulsphp73:] add child process pid: 20645, procinfo: 0x2df6830
2019-10-29 13:22:32.177955 [INFO] [16169] [APVH_android_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
2019-10-29 13:22:39.634710 [INFO] [16169] [APVH_javastr_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].
2019-10-29 13:22:39.634755 [INFO] [16169] [APVH_javastr_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_javastr_Suphp73.sock
2019-10-29 13:22:39.641576 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 20677, procinfo: 0x286e3b0
2019-10-29 13:22:39.641694 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].

-fオプションを使用して複数のファイルを監視することもできます。


[root@li1197-217 logs]# tail -f error.log lsrestart.log 
==> error.log <==
2019-10-29 13:22:31.719103 [INFO] [16169] [APVH_cultwpc_Sulsphp73:] add child process pid: 20640, procinfo: 0x384a9a0
2019-10-29 13:22:31.719172 [INFO] [16169] [APVH_cultwpc_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_cultwpc_Suphp73.sock.pid].
2019-10-29 13:22:32.176946 [INFO] [16169] [APVH_android_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
2019-10-29 13:22:32.176979 [INFO] [16169] [APVH_android_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_android_Suphp73.sock
2019-10-29 13:22:32.177901 [INFO] [16169] [APVH_android_Sulsphp73:] add child process pid: 20645, procinfo: 0x2df6830
2019-10-29 13:22:32.177955 [INFO] [16169] [APVH_android_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_android_Suphp73.sock.pid].
2019-10-29 13:22:39.634710 [INFO] [16169] [APVH_javastr_Sulsphp73:]: locked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].
2019-10-29 13:22:39.634755 [INFO] [16169] [APVH_javastr_Sulsphp73:] remove unix socket for detached process: /tmp/lshttpd/APVH_javastr_Suphp73.sock
2019-10-29 13:22:39.641576 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 20677, procinfo: 0x286e3b0
2019-10-29 13:22:39.641694 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].

==> lsrestart.log <==
Thu Oct 10 17:45:33 UTC 2019
restart, LSWS running: 1
Wed Oct 23 08:53:16 UTC 2019
restart, LSWS running: 1
Wed Oct 23 09:03:02 UTC 2019
restart, LSWS running: 1

-fオプションを使用して、出力の行数を指定することもできます。


# tail -2f error.log
2019-10-29 13:28:46.086130 [INFO] [16169] [APVH_cultwpc_Sulsphp73:] add child process pid: 21976, procinfo: 0xd032210
2019-10-29 13:28:46.086193 [INFO] [16169] [APVH_cultwpc_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_cultwpc_Suphp73.sock.pid].

5.5)パイプとgrepでのtailコマンドの使用

テール出力の特定のメッセージのみに関心がある場合があります。パイプとgrepでtailコマンドを使用して、出力内の特定のメッセージをフィルタリングできます。


# tail -100f error.log | grep 'denied'
2019-10-29 13:21:49.170651 [INFO] [16169] [159.65.53.153:38448] [ACL] Access to context [/] is denied!
2019-10-29 13:22:00.991330 [INFO] [16169] [182.71.209.203:22089] [ACL] Access to context [/] is denied!
2019-10-29 13:25:47.188167 [INFO] [16169] [79.137.42.145:36674] [ACL] Access to context [/] is denied!
2019-10-29 13:25:52.668213 [INFO] [16169] [162.144.60.165:52886] [ACL] Access to context [/] is denied!

5.6)tailコマンドを使用して別のコマンド出力をフィルタリングする

tailコマンドを別のコマンドと一緒に使用して、出力行をフィルタリングできます。コマンド出力の数行だけに関心がある場合に便利です。


# ls -ltr | tail -n 3
-rw-r--r--. 1 nobody nobody    24406 Oct 23 09:08 error.log.2019_10_23.02
-rw-r--r--. 1 nobody nobody 10486279 Oct 27 20:26 error.log.2019_10_27
-rw-r--r--. 1 nobody nobody  3494794 Oct 29 13:29 error.log
#

# ls -ltr | tail -n +15
-rw-r--r--. 1 nobody nobody 10490954 Oct 21 09:42 error.log.2019_10_21
-rw-r--r--. 1 nobody nobody 10485856 Oct 22 07:44 error.log.2019_10_22
-rw-r--r--. 1 nobody nobody 10485809 Oct 22 14:16 error.log.2019_10_22.01
-rw-r--r--. 1 nobody nobody  5398751 Oct 23 08:29 error.log.2019_10_23
-rw-r--r--. 1 nobody nobody    61485 Oct 23 08:58 error.log.2019_10_23.01
-rw-r--r--. 1 root   root        162 Oct 23 09:03 lsrestart.log
-rw-r--r--. 1 nobody nobody    24406 Oct 23 09:08 error.log.2019_10_23.02
-rw-r--r--. 1 nobody nobody 10486279 Oct 27 20:26 error.log.2019_10_27
-rw-r--r--. 1 nobody nobody  3499801 Oct 29 13:34 error.log

5.7)テールバージョンの印刷

–versionを使用して、tailコマンドのバージョンを出力できます。


# tail --version
tail (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor,
and Jim Meyering.
#

5.8)テールコマンドの詳細出力

詳細オプションを使用すると、出力にはファイル名のヘッダーが含まれます。


# tail -v -n 2 error.log
==> error.log <==
2019-10-29 13:39:30.769561 [INFO] [16169] [APVH_javastr_Sulsphp73:] add child process pid: 24454, procinfo: 0x405b840
2019-10-29 13:39:30.769618 [INFO] [16169] [APVH_javastr_Sulsphp73:]: unlocked pid file [/tmp/lshttpd/APVH_javastr_Suphp73.sock.pid].
#

6。結論

Linuxのtailコマンドは、ログメッセージをリアルタイムでデバッグするのに非常に便利です。これは、開発者がログファイルを操作するための優れたツールです。

参照 :ウィキペディアページ


Linux
  1. Linuxでのmvコマンド:7つの重要な例

  2. Linux での ln コマンドの例

  3. Linux でのコマンド例

  1. Linux での gzip コマンドの例

  2. Linux での file コマンドの例

  3. UNIX/Linux での tail コマンドの例

  1. 例を含む10のクイックLinuxテールコマンド

  2. Linuxでの8つのヘッドコマンドの例

  3. Linuxでの8つのStatコマンドの例