Linux tail 命令詳解


Linux命令:顯示文件結尾

  Head/Tail

  head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標准輸出中,而 tail 想當然就是看檔案的結尾,看看下面的范例:

(1)?

  displays the first 6 lines of a file

  head -6 readme.txt

  (2) displays the last 25 lines of a file

  tail -25 mail.txt

  范例一是顯示檔案的前 6 行,范例二則是顯示檔案最后的 25 行。

  而下面的范別,結合了 head 與 tail 的指令,顯示檔案的第 11 行到第 20 行:

(3)?

  head -20 file | tail -10

   在 tail 的使用手冊頁中顯示了比 head 還多的可用參數,其中有一個很好用的參數 " -f ",使用此參數時,tail 不會回傳結束信號,除非我們去自行去中斷它;相反的,它會一直等待一段時間,一直到他發現資料自它最后一次被讀取后,又被加入新的一行時:

(4)?

  display ongoing updates to the given

  log file

  tail -f /usr/tmp/logs/daemon_log.txt

  上述范例可以動態顯示該 log 文件的動態更新。

  假設該服務程序是一直不斷的加入動態資料到/usr/adm/logs/daemon_log.txt 的 log 文件里,在命令列控制窗口中使用 tail -f,它將會以一定的時間實時追蹤該檔的所有更新。 ( -f 的只有在其輸入為檔案時才能使用 )。

  假如你在 tail 后下了多個檔案參數,你便能在同一個窗口內一次追蹤數個 log 檔:

  track the mail log and the server error log

  at the same time.

  tail -f /var/log/mail.log /var/log/apache/error_log

  tac -- 反過來串連?!

   cat 倒過來怎么拼 ? 對啦 !! 這就是 tac 的功能啰 ~ 它是把檔案的順序內容反過來串連用的,那么 ~ 它都用在什么狀況下呢 ? 任何須要以后進先出的順序重新排列組件的工作都用得上它 ! 以下面的指令來說,便是以自最后建立的到最先建立的順序,列出三個最新建的使用者帳號:

(5)?

  last 3 /etc/passwd records - in reverse

  $ tail -3 /etc/passwd | tac

  curly:x:1003:100:3rd Stooge:/homes/curly:/bin/ksh

  larry:x:1002:100:2nd Stooge:/homes/larry:/bin/ksh

  moe:x:1001:100:1st Stooge:/homes/moe:/bin/ksh

 

查看文件內容的特殊方法
  相信最基本的cat和less,more你已經很熟悉了,如果有特殊的要求呢:
1. 如果你只想看文件的前5行,可以使用head命令,如:
head -5 /etc/passwd
2. 如果你想查看文件的后10行,可以使用tail命令,如:
tail -10 /etc/passwd
tail -f /var/log/messages
參數-f使tail不停地去讀最新的內容,這樣有實時監視的效果

一、UNIX下的TAIL命令

說明:部分內容摘錄自"永遠的UNIX",http://fanqiang.chinaunix.net/

NAME(名稱)

tail - 輸出文件的末尾部分

SYNOPSIS(總覽)

../src/tail [OPTION]... [FILE]...

DESCRIPTION(描述)

在標准輸出上顯示每個FILE的最后10行. 如果多於一個FILE,會一個接一個地顯示, 並在每個文件顯示的首部給出文件名. 如果沒有FILE,或者FILE是-,那么就從標准輸入上讀取.

--retry
即使tail開始時就不能訪問或者在tail運行后不能訪問,也仍然不停地嘗試打開文件. -- 只與 -f合用時有用.
-c, --bytes= N
輸出最后N個字節
-f, --follow[={name|descriptor}]
當文件增長時,輸出后續添加的數據; -f, --follow以及 --follow= descriptor 都是相同的意思
-n, --lines= N
輸出最后N行,而非默認的最后10行
--max-unchanged-stats= N
參看texinfo文檔(默認為5)
--max-consecutive-size-changes= N
參看texinfo文檔(默認為200)
--pid= PID
-f合用,表示在進程ID,PID死掉之后結束.
-q, --quiet, --silent
從不輸出給出文件名的首部
-s, --sleep-interval= S
-f合用,表示在每次反復的間隔休眠S秒
-v, --verbose
總是輸出給出文件名的首部
--help
顯示幫助信息后退出
--version
輸出版本信息后退出

如果N(字節或者行數)的第一個字符為`+', 那么從每個文件的開頭算起的第N項開始顯示, 否則, 顯示該文件的最后N項. N可以有一個倍數前綴: b表示512,k表示1024,m表示1048576(1兆). 第一個選項 -VALUE 或+VALUE 以-n VALUE或-n +VALUE 方式看待,除非VALUE含有[bkm]后綴倍數中的一個,在這種情況下,它被看作 -c VALUE 或者-c +VALUE

使用--follow (-f)時,tail默認后接文件描述符, 這意味着即使tail顯示的文件改名了,tail仍然可以追蹤到其末尾部分. 如果你確實希望查詢文件的實際名而非文件描述符 (例如,日志輪轉時), 這種默認的操作就不是你所期望的了. 在這種情況下應使用--follow=name. 這將導致tail通過周期性地重新打開所指定的文件來追蹤其是否被刪除了,或者被其他程序重新創建了.

        tail 的完整文檔是以Texinfo手冊形式維護的. 如果 infotail 程序在你那兒都已經安裝好了,那么命令:info tail 應該會讓你訪問到整篇手冊.

       從上面的說明可以看到,最常用的形式是:tail   -f   sys.log

二、WINDOWS下的TAIL工具

  sourceforge上有個tail工具不錯, 推薦給大家
    1. 首先當然是tail功能了, 可以tail多個文件, 如access.log, error.log
    2. 關鍵字高亮功能.
    3. workspace管理.
    4. 綠色, 免安裝, 只有164k

     下載地址 http://sourceforge.net/projects/tailforwin32

其他:

用途

從指定點開始將文件寫到標准輸出。使用tail命令的-f選項可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,並且不但刷新,使你看到最新的文件內容。

 

 

語法

標准語法

tail [  -f ] [  -c Number |  -n Number |  -m Number |  -b Number |  -k Number ] [ File ]

 

 

要以逆序顯示行

tail [  -r ] [  -n Number ] [ File ]

 

 

描述

tail 命令從指定點開始將File 參數指定的文件寫到標准輸出。如果沒有指定文件,則會使用標准輸入。Number 變量指定將多少單元寫入標准輸出。Number 變量的值可以是正的或負的整數。如果值的前面有+(加號),從文件開頭指定的單元數開始將文件寫到標准輸出。如果值的前面有-(減號),則從文件末尾指定 的單元數開始將文件寫到標准輸出。如果值前面沒有+(加號)或-(減號),那么從文件末尾指定的單元號開始讀取文件。

 

 

Number 變量用於確定計數的起點的單元類型由-b、-c、-k、-m 以及-n 標志確定。如果沒有指定其中的任何一個標志,那么tail 命令就會讀取指定文件的最后十行,並將其寫到標准輸出。這與在命令行輸入-n 10 是相同的。

 

 

-m 標志在單字節和雙字節字符環境中提供了一致的結果。當輸入是包含多字節字符的文本文件時應謹慎使用-c 標志,因為產生的輸出可能不從字符邊界開始。

 

 

標志

 

-b Number

從Number 變量表示的512 字節塊位置開始讀取指定文件。

 

-c Number

從Number 變量表示的字節位置開始讀取指定文件。

 

-f

如果輸入文件是常規文件或如果File 參數指定FIFO(先進先出),那么tail 命令不會在復制了輸入文件的最后的指定單元后終止,而是繼續從輸入文件讀取和復制額外的單元(當這些單元可用時)。如果沒有指定File 參數,並且標准輸入是管道,則會忽略-f 標志。tail -f 命令可用於監視另一個進程正在寫入的文件的增長。

 

-k Number

從Number 變量表示的1KB 塊位置開始讀取指定文件。

 

-m Number

從Number 變量表示的多字節字符位置開始讀取指定文件。使用該標志提供在單字節和雙字節字符代碼集環境中的一致結果。

 

-n Number

從Number 變量表示的行位置開始讀取指定文件。

 

-r

從文件末尾以逆序方式顯示輸出。-r 標志的缺省值是以逆序方式打印整個文件。如果文件大於20,480 字節,那么-r 標志只顯示最后的20,480 字節。

 

-r 標志只有與-n 標志一起時才有效。否則,就會將其忽略。

 

 

退出狀態

該命令返回下列的退出值:

 

 

0

成功完成。

 

>0

出現錯誤。

 

示例

要顯示notes 文件的最后十行,輸入:

 

tail notes要指定從notes 文件末尾開始讀取的行數,輸入:

tail  -n 20 notes

要從第200 字節開始,每次顯示一頁notes 文件,輸入:

tail  -c +200 notes | pg

要跟蹤文件的增長,輸入:

tail  -f accounts

這顯示accounts 文件的最后十行。tail 命令繼續顯示添加到accounts 文件中的行。顯示會一直繼續,直到您按下Ctrl-C 按鍵順序來停止。

文件

 

/usr/bin/tail

包含tail 命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM