簡體   English   中英

使用 tail -F 查看實時更改的文件

[英]Using tail -F to see a file changing in real-time

我有一個腳本,用於收集不斷輸入的文件的大小。 我將其大小回顯到日志文件(echo 'filesize is $size' > log.txt),所以我只有最后的大小信息。 所以,只有一行。

現在,在另一個終端中,我想拖尾該日志文件以查看其大小實時增加。 事實證明, tail -f path/to/file 給了我想要的輸出,但它一直跳到下一行(我猜是預期的)。

所以,輸出是這樣的:

$ tail -F log.txt 2>/dev/null
filesize is 1.658 GB
filesize is 1.659 GB
filesize is 1.659 GB
filesize is 1.660 GB

我想要更像命令“less”的東西,你沒有光標回來。 也許一個更好的例子是“mtr”,它不斷更新屏幕上的信息而不去下一行(與traceroute相反)。

謝謝,

使用此命令。

watch tail -n 1 log.txt
while [ 1 ]; do sleep 1; clear; tail log.txt; done

這沒有傳遞命令和參數來watch的缺點(有時你需要跳額外的循環才能正確),並且它會清除終端。

您可以watch命令以每n秒監視文件更改/差異( -d

watch -n 5 -d cat log.txt

接收有關文件的實時信息的最佳解決方案是使用 inotify

這是一個 linux 內核功能,用於在特定文件更改時接收通知。 您可以編寫自己的使用該功能的 c 程序,也可以簡單地使用 inotify-wait 或 inotify-watch 命令構建腳本。 不過,您可能需要安裝它。 但兩者都有很好的記錄。 新版本的 tail 也使用了這個 linux 內核功能

編輯:請記住,這只會幫助您監視文件事件。 當這樣的事件發生時你所做的不是我的那杯茶。

附注。 您是否考慮過寫入文件的進程可能僅在出現換行符時才刷新其寫入緩沖區

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM