linux系統中,軟體執行的時候會產生日誌檔案,而這些軟體本身對日誌不進行分割或者壓縮處理,久而久之會導致日誌檔案異常巨大,影響機器效能,活磁碟空間不足。而logrotate就是管理這些日誌檔案的工具,可以對單個日誌檔案或者某個目錄下的檔案按時間或大小進行切割、 壓縮歸檔,還可以在切割之後執行自定義命令。
系統會按照cron計畫執行logrotate,通常以天為基礎單位,在linux系統中計畫每天執行的指令碼通常位於 /etc/cron.daily/logrotate。也有一些系統不同,比如gentoo,路徑是在/etc/cron.daily/logrotate.cron。如果你想讓logrotate執行頻率更高(比如銷售),你只需要用乙個指令碼來讓cron執行 /etc/cron.hourly/logrotate.cron就可以了。當logrotate執行的時候,它會讀取自身的配置檔案來決定需要分割日誌檔案的路徑,分割頻率及保留多少個日誌存檔。
logrotate.conf 主配置檔案:
logrotate的主要配置檔案位於 /etc/logrotate.conf,該檔案會合併include /etc/logrotate.d下所有配置檔案。使用ls命令可以看到目錄下的檔案,這些檔案包含著各個軟體分割日誌的設定:
logrotate例項
/var/log/apache.log
rotate:指定分割日誌的數量,該例項配置為4,如果日誌數量已經到達4,當新的分割日誌產生時,會刪除最
老的乙個。
daily分割頻率按天,還可以配置值:weekly monthly yearly
compress對日誌以gzip格式進行壓縮
nocompress不進行檔案壓縮
delaycompress:下次logrotate進行分割操作時再將本次分割的日誌檔案進行壓縮操作
prerotate/endscript在輪替之前執行之間的命令,prerotate與endscript成對出現。
postrotate/endscriptlogrotate每次分割檔案後會執行 postrotate 後的命令,作用是讓應用重啟,以便切換到新的日
志檔案。
sharedscripts:
這個命令的作用就是在執行postrotate裡的指令碼命令之前檢查是否還有日誌檔案要分割,所有需要日誌檔案都分割完之後才會執行指令碼命令。當然,如果沒有日誌檔案需要分割,postrotate 裡的指令碼命令同樣不會執行。例如,nginx的access日誌和error日誌都被分割,那postrotate 裡的指令碼就會被執行兩次,如果指令碼命令裡是重啟伺服器,那伺服器就會被重啟兩次,這顯然不是我們所希望的。這個時候就需要讓logrotate在分割多個檔案的時候只執行一次postrotate ,指令碼設定命令sharedscripts
missingok如果日誌檔案不存在,繼續進行下乙個操作
create舊日誌檔案輪替後建立新的日誌檔案
dateext輪替舊日誌檔案時,檔名新增-%y %m %d形式日期,可用dateformat選項
擴充套件配置。
nodateext舊日誌檔案不使用dateext副檔名,後面序數自增如"*.log.1"
dateformat只允許%y %m %d和%s指定符。注意:系統時鐘需要設定到2001-09-09之
後,%s才可以正確工作
olddir將輪替的檔案移至指定目錄下
ifempty不論日誌是否空,都進行輪替
notifempty若日誌為空,則不進行輪替
Cache control引數說明
header中的cache control引數說明 php編碼 網頁的快取是由http訊息頭中的 cache control 來控制的,常見的取值有private no cache max age must revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況 ...
nmap引數說明
目標規範 可以通過主機名,ip位址,網路等 例 scanme.nmap.org,dream4.org 24,192.168.0.1 10.0.0 255.1 254 il 從指定檔案獲取主機或網路 ir 隨機選擇主機,0 不限制掃瞄主機數 exclude 排除指定主機或網路 excludefile ...
toString引數說明
格式化數值 有時,我們可能需要將數值以一定的格式來呈現,就需要對數值進行格式化。我們使用格式字串指定格式。格式字串採用以下形式 axx,其中 a 為格式說明符,指定格式化型別,xx 為精度說明符,控制格式化輸出的有效位數或小數字數。格式說明符 說明 示例 輸出 c 貨幣 2.5.tostring c...