登錄檔輪替(logrotate):
隨著使用者在系統上所做的事情越來越多,登錄檔中所記錄的訊息也會越來越多,當然也就增加了登錄檔的容量大小。因登錄檔寫入的機會很頻繁,故因檔案太大導致的「讀寫效率不彰」也會很明顯,而主機若太常讀寫一個大檔案,也可能加快硬碟的耗損。所以,從登錄檔被建立開始、經過一段週期時間後,系統就需要自動進行「登錄檔輪替」以解決上述問題。
登錄檔輪替,就是將原先的登錄檔改名(在檔名後面加個數字),譬如/var/log/XXX這個登錄檔改名為/var/log/XXX.1(也可能改名後再將檔案壓縮,故在數字之後還加了壓縮檔的副檔名),然後建立一個名為/var/log/XXX的新空白登錄檔,以後所有的訊息自然就寫在這個新空白登錄檔,而不去寫入/var/log/XXX.1這個大檔案。當又經過一段週期時間後,就再進行一次登錄檔輪替…。如下圖所示:
總之,重點是:
※ 無論何時,訊息只記錄在當時的/var/log/XXX登錄檔。
※ /var/log/XXX.N這種登錄檔,N這個數字越大,代表是時間越久之前的登錄檔。
(1) 登錄檔輪替的相關設定:
登錄檔輪替的相關設定,即是設定輪替執行的條件,與輪替時是否執行某些指令…等等。可以為每個登錄檔做個別的設定,也可以統一為每個登錄檔做設定。
※ 要注意:若某個登錄檔的個別設定之設項目,與統一設定的設定項目相互衝突,則以個別設定的設定項目為準。
※ 如果有些設定項目,在個別設定中沒有設定,則以統一設定為準。
通常,負責統一設定的檔案是/etc/logrotate.conf,而負責每個登錄檔之個別設定的檔案則位於/etc/logrotate.d/這個目錄底下。其語法是一樣的:
(1-1) 針對個別登錄檔設定,其語法架構為:
登錄檔路徑
{
設定項目
}
(1-2) #符號後面的文字為「註解」。無任何實際效果。
(1-3) 一個設定項目佔一行,常用的設定項目如下:
各設定項目的值 |
各設定項目的意義 |
※ daily:表示每天輪替一次。 ※ weekly:表示每周輪替一次。 ※ monthly:表示每月輪替一次。 |
進行輪替的週期時間
|
minsize N單位 |
N是數字。表示登錄檔的容量若到了一定大小(也就是N單位的大小),就要進行輪替,並不以時間週期來做輪替。 單位可為K(表示Kb)、M(表示Mb)、G(表示Gb)。 |
compress |
表示在輪替時,要將登錄檔進行壓縮之後再改名。 |
rotate N |
表示僅保留N個改名後的登錄檔。意即/var/log/XXX.N在進行輪替後,會被刪除。 |
sharedscripts prerotate 指令 endscript |
表示在執行輪替時,要先執行指令,再進行輪替。 |
sharedscripts postrotate 指令 endscript |
表示在輪替完畢之後,就要執行指令。 |
(2) 實際執行登錄檔輪替:
使用指令: logrotate 選項 登錄檔設定檔
其中,選項有:
※ 無選項:在輪替條件達成的情況下才會執行輪替。
※ -v:顯示輪替在執行時的過程。
※ -f:不管輪替的條件有無達成,強制執行輪替。
範例如(本範例在ubuntu系統下):logrotate -vf /etc/logrotate.d/rsyslog
可立即執行系統登錄檔的輪替,並顯示出輪替的過程。
留言列表