Log-Files

重命名/移動日誌文件後,日誌記錄不會停止……我該如何停止它?

  • September 30, 2012

剛剛發現 logrotate 沒有輪換我們的防火牆日誌。所以它的大小高達12G。

我需要將文件分成更小的塊並開始手動旋轉它們,這樣我才能讓事情回到正軌。

但是,在我開始拆分防火牆之前,我需要阻止防火牆記錄到目前的防火牆日誌文件並強制它開始記錄到一個新的空文件。這樣我就不會嘗試拆分或輪換仍在不斷增長的日誌文件。

我試圖簡單地做到這一點:

mv firewall firewall.old
touch firewall

我希望看到新的空防火牆文件的大小開始增長,但沒有…… firewall.old 仍然被記錄到。

然後我嘗試啟動/停止 iptables。不用找了。firewall.old 仍然是日誌文件。

我試圖將它移動到另一個目錄。那沒有幫助。

我試圖停止 iptables,然後更改文件名並創建一個新的防火牆文件,然後再次啟動 iptables,但沒有任何變化。

如何停止記錄此文件並強制它開始記錄新文件?

iptables 使用 syslog 工具進行日誌記錄。向 syslogd、ksyslogd 或 rsyslogd 發送 SIGHUP 以關閉和重新打開日誌文件。

日誌文件的寫入不是由 iptables 執行的。iptables 只是將日誌記錄到核心系統日誌工具,然後由您的系統日誌程序將其寫入日誌文件。當您移動文件時,您實際上只是從文件系統的角度重命名它。您的系統日誌守護程序不知道您這樣做了,並且愉快地繼續寫入其打開的文件句柄。您需要做的是重新載入系統日誌守護程序,以便它根據文件系統路徑重新打開文件並開始寫入新文件。大多數係統日誌守護程序支持擷取 HUP 信號來執行此操作,並且不需要完全重新啟動。

您應該使用大多數發行版預裝的程序(例如 logrotate)來為您處理輪換。它很聰明,並支持諸如信號守護程序之類的操作。您無需為此目的編寫自己的腳本。

引用自:https://serverfault.com/questions/131659