
我正在運行一個使用 SSH 連線的郵件伺服器。 My.bash_profile
配置為將 SSH 會話附加到特定screen
會話。
現在我想將日誌(例如係統日誌)列印到此螢幕會話的一個視窗中。我嘗試跑步
tail -f /var/log/syslog
但每天6點25分停止輸出。我猜那是日誌旋轉的時間。那麼有沒有辦法讓日誌印成螢幕呢?
答案1
你需要tail --follow=name /var/log/syslog
原因是預設情況下(據說是出於性能原因)tail
打開指定的文件,然後觀看檔案描述符它源自於open(2)
對改變的呼籲。只要文件被更改,附加到甚至重寫(通過首先截斷它),它就可以工作,但如果文件被更改,它就會停止工作被取代- 也就是說,刪除並使用相同的名稱創建,這就是logrotate
通常所做的事情。
“名稱”模式使用更昂貴的系統--follow
調用,它實際上每次通過文件系統層“解析”文件的名稱,並且如果注意到文件更改了其所謂的tail
stat(2)
tail
“索引節點”,tail
重新開啟檔案。
輸出man tail
:
-f, --follow[={name|descriptor}]
隨著文件的增長輸出附加資料;缺少選項參數意味著“描述符”
您也可以查看-F
命令列選項,其定義為
-F
與...一樣--follow=name --retry
答案2
你的猜測其實是正確的。此時syslog中斷寫入日誌,對其進行gz並重新啟動日誌。
你可以嘗試用
tail -f --retry /var/log/syslog
這樣當日誌輪替完成後,tail 應該重試重新開啟文件