關於命令tail的引數 F的使用

2021-06-01 23:44:57 字數 785 閱讀 3182

我們經常會用到用」-f」的引數來監控log檔案(看著log一屏屏的翻,比較有成就感:)

好像在實時log分析的程式裡,大家的思路大多也是用tail -f某個log檔案

然後再用管道傳給程式處理,但這樣有乙個問題:

就是當系統logrotate這個log檔案的時候,系統會重建這個log檔案

在這個時候,如果監控這個log檔案用的是命令」tail -f

「的話

就會接不到任何新的內容

一般的做法是在這個log檔案

logrotate之前把監控的指令碼程式(包含tail -f)都kill掉,在logrotate之後呢

再重新起起來,但是這裡也許有一種更好的解決方法:用引數

」-f」代替」-f」

「-f「相當於」–retry -f」

用這個引數,就算

原來的log檔案被重建

tail還能重新開啟新的log檔案,繼續接收log內容

我做過簡單的測試,在乙個shell裡用乙個指令碼不停地往乙個log檔案裡寫東西

在另外乙個shell裡用tail -f來讀,當第乙個shell裡停掉程式,刪掉log檔案,再重啟程式(同時重建了log檔案)的時候

另外那個shell裡讀這個log檔案的tail再沒有任何新的顯示

但如果我們用tail -f來讀,同樣在頭乙個shell裡那樣處理後

這邊出乙個:

tail: 『******』 has been replaced; following end of new file

Tail 命令的學習

tail命令用於輸入檔案中的尾部內容。tail命令預設在螢幕上顯示指定檔案的末尾10行。如果給定的檔案不止乙個,則在顯示的每個檔案前面加乙個檔名標題。如果沒有指定檔案或者檔名為 則讀取標準輸入。注意 如果表示位元組或行數的n值之前有乙個 號,則從檔案開頭的第n項開始顯示,而不是顯示檔案的最後n項。n...

linux中的tail命令

1.檢視檔案的前5行,可以使用head命令,如 head 5 etc passwd 2.檢視檔案的後10行,可以使用tail命令,如 tail 2 etc passwd 或 tail n 2 etc passwd tail f var log messages 引數 f使tail不停地去讀最新的內容...

使用Ruby簡單實現的tail命令,支援動態輸出

最主要的是使用seek這個命令,從檔案的末尾開始讀字元。讀到乙個換行符 n 之後,計數器加一,直到找到符合要求的行數後,讀內容到檔案末尾輸出。支援 f 部分的想法是,在檔案最後的位置不斷地迴圈讀,發現新內容後就進行輸出。指令碼存在的問題 不支援多個檔案,tail命令本身是可以支援的 不斷迴圈的效率太...