當前位置:編程學習大全網 - 源碼下載 - 為啥麽logrotate日誌不輪轉

為啥麽logrotate日誌不輪轉

使用:

logrotate CONF_FILE+

描述:

可自動輪轉,壓縮,刪除,郵寄日誌文件。可每天,每周,每月或日誌文件達到壹定大小時進行操作。

通常logrotate是壹個每天的cron計劃,壹般不會在壹天內多次修改日誌,除非輪轉是基於日誌大小的,

或者logrotate被多次運行,使用了-f(--force)項。

命令行上可指定任何多個配置文件。

後面的配置會覆蓋前面的配置,所以配置文件的加載順序很重要。

通常需要在壹個配置文件中include其他配置文件,具體參見include指令用法。

如果在命令行上給出了壹個目錄,那麽該目錄下所有文件都將被用作配置文件。

如果沒有參數,logrotate就打印版本等信息。如果在輪轉日誌時發生錯誤,會以非0狀態退出。

選項:

-d debug模式,隱含-v,不會對日誌文件做實際操作

-f, --force

強制輪轉日誌

-m, --mail <command>

郵寄日誌時使用的命令

-s, --state <statefile>

指定另壹個state文件

--usage

打印幫助

-v, --verbose

詳細信息

配置文件

logrotate會讀取每壹個配置文件,配置文件中可對global和具體log文件配置。

本地配置(log文件配置)覆蓋global配置,後來的配置覆蓋先前的配置。

# sample logrotate configuration file 註釋行

compress 輪轉後進行壓縮

/var/log/messages { 指定日誌文件路徑

rotate 5 保留5個輪轉文件

weekly 每周輪轉

postrotate 輪轉之後執行的命令(在壓縮舊日誌之前)

/usr/bin/killall -HUP syslogd

endscript

}

"/var/log/press 不壓縮

}

=====================================================

詳細選項解釋:

rotate COUNT

輪轉COUNT次,也就是最多保留COUNT個輪轉備份。

超出的被刪除或郵寄。

設置為0,則不保存輪轉的老日誌。

start COUNT

輪轉文件名基於這個數字。

例如,指定0時,原日誌文件輪轉的備份文件以.0為擴展名,如果指定9,就直接從.9開始跳過0-8

然後再繼續向後輪轉rotate指定的次數。

compress

默認使用gzip壓縮老日誌

nocompress

不壓縮老日誌

compresscmd

指定壓縮命令,默認gzip

uncompresscmd

指定解壓命令,默認gunzip

compressext

如果啟用了壓縮,指定在壓縮了的日誌文件上使用哪個擴展。默認隨配置的壓縮命令

compressoptions

可以傳送命令行選項給壓縮程序,默認的gzip使用-9選項(最大壓縮率)

delaycompress

延遲到下次輪轉時壓縮之前的日誌文件。

需要與compress項連用,當程序有時不能關閉寫日誌文件時可使用此項。

nodelaycompress

不延遲壓縮

copy

拷貝日誌文件,不修改原有文件。

給當前日誌文件做快照,或其他工具需要截斷或解析文件時,可使用此項

使用此項時,create項就沒用了,因為老日誌文件占著位置

nocopy

留下原日誌文件而不復制

copytruncate

在創建了拷貝後截斷原日誌文件到0大小,而不是用移動就日誌文件再創建新文件的方法。

可用於日誌壹些程序不關閉日誌文件壹直寫的情況。

註意,在拷貝文件和截斷文件時有壹個非常小的時間片,所以可能會丟失日誌信息。

使用此項時,create無效

nocopytruncate

創建拷貝後不截斷原日誌文件

create MODE OWNER GROUP

在輪轉動作之後,postrotate腳本執行之前,立即使用剛輪轉的日誌文件名創建日誌文件。

MODE 指定日誌文件的權限(0660之類)

OWNER 指定日誌文件的屬主

GROUP 指定日誌文件的屬組

可省略任何上述屬性,省略的屬性從原文件繼承,可使用nocreate項來關閉

nocreate

不創建新的日誌文件

daily

每天輪轉日誌文件

weekly

如果當前的星期幾比上次輪轉的星期幾少,或者過了壹個多星期,就會發生輪轉

通常是在每周的第壹天輪轉,如果logrotate不是每天運行的,會在第壹次有機會時進行輪轉。

monthly

壹月中logrotate第壹次運行時進行輪轉(通常是壹月的第壹天)

yearly

如果當前年份不同於上次輪轉的年份,則進行日誌輪轉

dateext

歸檔舊日誌文件時,文件名添加YYYYMMDD形式日期,可用dateformat選項擴展配置。

nodateext

不使用dateext擴展名

dateformat FORMAT_STRING

使用strftime(3)類似的格式指定dateext的格式,只允許%Y %m %d和%s指定符。

默認為 -%Y%m%d。

註意:擴展中分割日誌的字符也是日期格式的壹部分,

系統時鐘需要設置到2001-09-09之後,%s才能正確工作

extension EXT

日誌文件可在輪轉後使用指定的EXT擴展名。

如果使用壓縮,通常EXT後還會加上壓縮文件的擴展名,通常是.gz。

例如想把mylog.foo輪轉為mylog.1.foo.gz而不是mylog.foo.1.gz

ifempty

默認項,即使日誌是空的也進行輪轉,覆蓋notifempty項

notifempty

如果日誌為空,則不進行輪轉

include FILE_OR_DIRECTORY

讀取include指令下的文件。

如果是目錄,在繼續處理包含的文件之前,按字母順序讀取目錄下大部分文件(只讀取普通文件)

目錄或管道文件等,還有使用指定擴展名的文件不讀取

用tabooext指令定義禁忌擴展名。

include指令不能出現在日誌文件定義中。

tabooext [+] LIST

修改當前禁忌擴展名列表。

如果列表前使用了+,表示將LIST加到當前列表中,否則就替換當前列表。

默認包含:.rpmorig, .rpmsave, .v, .swp, .dpkg-dist, .dpkg-old, .dpkg-new, .disabled

mail ADDRESS

當日誌輪轉超過保留數時,多出的會mail到ADDRESS。

可在log定義中使用nomail指令來不郵寄該log

nomail

不郵寄日誌

mailfirst

與mail指令連用,郵寄剛輪轉的日誌,而不是期滿的日誌(超出數量要被刪除的)

maillast

默認項,與mail連用,郵寄超出rotate數量要被刪除的日誌。

maxage COUNT

刪除COUNT天前的輪轉備份。

只在輪轉動作時檢查日誌文件的時間戳。

如果配置了maillast和mail指令,刪除的輪轉備份會被郵寄。

minsize SIZE

日誌文件增長到超過SIZE bytes時進行輪轉,但不會在額外指定的時間間隔之前(daily,weekly等)。

相關的size指令與其類似,但size與間隔指令互斥,不考慮時間而直接進行輪轉。

而minsize指令要考慮大小和時間戳。

size SIZE

超過SIZE時輪轉,SIZE默認單位是KB,可使用M,G來指定MB和GB。

shred

默認關閉

刪除文件使用shred -u(銷毀)而不是unlink()系統調用。

可確保刪除日誌後,文件不可讀(對磁盤傷害大)。

shredcycles COUNT

調用shred在刪除日誌文件前覆寫COUNT次,不使用此項時,就按shred默認次數覆寫。

noshred

刪除就文件時不使用shred

missingok

如果日誌文件不存在,繼續處理下壹個文件而不產生報錯信息。

nomissingok

默認項,如果日誌文件不存在,就產生錯誤。

olddir DIRECTORY

輪轉的日誌放到DIRECTORY目錄中,目錄必須與日誌文件在同壹物理設備上,

如果沒指定絕對路徑,則假定該目錄在與日誌目錄下。

noolddir

日誌只在它們的當前目錄中輪轉。

sharedsctipts

通常prerotate和postrotate腳本為每壹個輪轉的日誌運行,也就是說壹個單獨的腳本可能因為日誌輪轉定義

中匹配了多個文件時(例如/var/log/news/*),該腳本會運行多次。

指定此項,腳本只對所有匹配的日誌文件統壹執行壹次。

如果匹配的日誌都不需要輪轉,腳本也不會執行。

如果腳本錯誤退出,剩下的動作也不會為任何日誌執行。

隱含create項,可被nosharedscripts覆蓋。

nosharedscripts

默認項

為每壹個輪轉的日誌執行prerotate和postrotate

如果腳本錯誤退出,剩下的動作只不對影響到的日誌執行。

prerotate/endscript

在prerotate和endscript之間的行(他倆自己各占壹行),在日誌文件被輪轉之前並且有需要輪轉時,才會執行。

該指令只能用於log文件定義中。

postrotate/endscript

在prerotate和endscript之間的行,在日誌文件被輪轉之後執行。

該指令只能用於log文件定義中。

firstaction/endscript

在firstaction和endscript之間的行,在輪轉所有匹配了通配符的日誌被輪轉之前,

在prerotate執行之前,並且至少要有壹個日誌需要被輪轉時,才會執行。

只能用於log文件定義中,如果腳本錯誤退出,就不再繼續往下進行。

lastaction/endscript

在lastaction和endscript之間的行,在輪轉了所有匹配的日誌後,在postrotate執行之後,

並且至少要有壹個日誌被輪轉了的情況下,才會執行。

只能用於log文件定義中,如果腳本錯誤退出,只顯示壹個錯誤信息作為最後的動作。

  • 上一篇:請問當塗麗景溫泉怎麽樣?
  • 下一篇:醫美運營實戰丨中小型口腔門診運營思路歸納(上)
  • copyright 2024編程學習大全網