Linux 命令(87)—— tail 命令

  • 2019 年 11 月 12 日
  • 筆記

1.命令簡介

tail 命令用於顯示文件尾部內容,與命令 head 作用相反。默認情況下,顯示文件的末尾 10 行內容。

2.命令格式

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

可以指定多個文件 FILE,種情況下,輸出的內容前會列出所屬文件名。如果未給定 FILE 或者 FILE 是 -,則從標準輸入讀取。

3.選項說明

-c, --bytes=K      輸出最後 K 個位元組;或者使用 +K 表示從文件的第 K 個位元組開始到最後  --retry     不停地嘗試打開不可訪問的文件。只與 -f 聯用時有用  -f, --follow[={name|descriptor}]      按照指定時間間隔輸出文件追加的內容; -f, --follow 以及 --follow=descriptor 作用相同。--follow=name 表示根據文件名檢測而不是文件描述符,默認 5 次檢測後文件未發生改變則重新打開文件  -n, --lines=N      輸出最後 N 行,而非默認的最後 10 行  --max-unchanged-stats=N      與選項 --follow=name 聯用,N 次檢測後如果文件未發生變化,則重新打開文件。此選項不常用,一般文件鏈接被重定向或者日誌滾動時導致文件名發生變化時才使用該選項  --pid=PID      與 -f 聯用,表示在進程 ID 死掉之後結束 tail  -q, --quiet, --silent      多個文件時輸出的內容前隱藏文件名  -s, --sleep-interval=S      與 -f 聯用,表示檢測文件變化的間隔,默認 1s  -v, --verbose      多個文件時輸出的內容前顯示文件名(默認)  --help      顯示幫助資訊後退出  --version      輸出版本資訊後退出

注意: (1)長選項的強制參數對於短選項也是強制的; (2)K 位元組後可以有一個倍數後綴: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; (3)使用 -f, –follow 時,tail 默認後接文件描述符, 這意味著即使 tail 跟蹤的文件改名了,tail 仍然可以顯示其末尾部分。如果希望查詢文件的實際名稱而非文件描述符(例如日誌滾動時), 應使用 –follow=name,tail 將周期性地重新打開所指定的文件。

4.常用示例

(1)顯示文件 /etc/passwd 的末尾 10 行。

tail /etc/passwd    rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin  nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin  saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin  avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin  uucp:x:10:14:Uucp user:/var/spool/uucp:/sbin/nologin  nslcd:x:65:55:LDAP Client User:/:/sbin/nologin  arpwatch:x:77:77::/var/lib/arpwatch:/sbin/nologin  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin  tcpdump:x:72:72::/:/sbin/nologin  mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

(2)顯示文件 /etc/passwd 的末尾 3 行。

tail -n3 /etc/passwd    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin  tcpdump:x:72:72::/:/sbin/nologin  mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

(3)從第 N 行開始顯示文件的內容,以 /etc/passwd 為例,這裡的 N 等於 30。

tail -n+30 /etc/passwd    tcpdump:x:72:72::/:/sbin/nologin  mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin

(4)當文件增長時,動態查看文件追加的內容。假設文件 my.log 是滾動的服務日誌,每到指定大小將被重命名,這裡始終跟蹤最新的日誌文件。

tail --follow=name my.log

(5)顯示多個文件的最後 3 行,並且默認會顯示文件名。

tail -n3 /etc/passwd /etc/group    ==> /etc/passwd <==  mqq:x:500:501::/usr/local/app:/bin/bash  dev_mqq:x:501:501::/usr/local/dev:/bin/bash  dev:x:502:501::/home/dev:/bin/bash    ==> /etc/group <==  screen:x:84:  admin:x:500:  mqq:x:501: