1、logrotate是什么
logrotate自動對日志文件進行輪詢,壓縮、刪除、和發送郵件。每個日志文件可以以每天、每個星期、每月的周期進行處理。通常的,logrotate設置成了定時任務每日執行一次。通俗的說,可以按照自己的需求對logrotate進行設置,如何處理一個文件,如我們經常用的nginx的訪問日志,每日做一個切割
2、配置文件
/etc/logrotate.conf
/etc/logrotate.d/
/etc/logrotate.conf會包含/etc/logrotate.d/目錄下的配置文件
3、常用命令
logrotate /etc/logrotate.conf 用配置文件的話,不能馬上有效,直接使用命令馬上可以生效
logrotate -f /etc/logrotate.conf 強制執行
logrotate /etc/logrotate.conf -s ll.txt -s 此次執行了輪詢的文件輸出到指定的文件,默認為/var/lib/logrotate/logrotate.status
4、常用配置:
compress:對輪詢出來的日志文件進行壓縮,默認我gzip
nocompress:
對輪詢出來的日志文件不進行壓縮
compresscmd:指定使用什么方式進行壓縮,默認為gzip。指定的格式為:compresscmd /usr/bin/bzip2
compressext:
指定壓縮文件的后綴,如:compressext.bz2,默認隨壓縮方式的
uncompresscmd:解壓方式,默認為gunzip
copy:日志輪詢的時候,對原日志文件進行copy,不改變原文件,相當於對原文件進行了一個快照,此選項使用的時候,create不生效
nocopy:對原日志文件不進行拷貝,此選項會覆蓋copy選項
create mode owner group, create owner group:日志輪詢后會創建一個新的原來名字的文件,可以設置權限和所屬者或者所屬組,如create 755 root lile
nocreate:輪詢后不創建,也就是把要輪詢的日志輪詢后不會產生一個原來名字的文件,此選項會覆蓋create
olddir directory:指定輪詢出來的日志文件存放的目錄
noolddir:輪詢出來的日志文件放在與原日志文件一樣的目錄,此選項會覆蓋olddir
createolddir mode owner group:當指定輪詢日志存放路徑的時候,若路徑不存在,則創建
nocreateolddir:
當指定輪詢日志存放路徑的時候,若路徑不存在,不創建,此選項會覆蓋createolddir
hourly: 日志每小時做一次輪詢
daily: 日志每天做一次輪詢
weekly:
日志每個星期做一次輪詢
monthly:
日志每月做一次輪詢
yearly:日志每年做一次輪詢
dateext:輪詢出的日志名字后加上日期
nodateext:
輪詢出的日志名字不使用日期的方式,此選項會覆蓋dateext
dateformat format_string:日期的格式
dateyesterday:今天做的輪詢的話,文件名的日期寫昨天的
delaycompress:新的輪詢日志不會馬上壓縮,等到下一個新的輪詢日志出現的時候才做壓縮,要與compress參數一起使用
nodelaycompress:不會延期壓縮,輪詢日志后會馬上進行壓縮,
要與compress參數一起使用;此選項會覆蓋d
elaycompress選項
ifempty:即使日志文件為空,也要做輪詢,
默認為ifempty
notifempty:日志文件為空的話,不做輪詢,
會覆蓋
ifempty參數
missingok:如果要做日志輪詢的日志文件不存在,那么忽略,接着做其他的
nomissingok:
如果要做日志輪詢的日志文件不存在,那么不會繼續執行后面的,而會返回錯誤,默認為nomissing
maxage count:刪除指定count天前的日志,如果配置了mail的話,刪除的日志將會發送到指定的郵箱
start count:如果不使用dateext,輪詢出的日志文件不會使用日期作為后綴,而會使用數字,star count 可以設置這個數字的開始至,如:start 9,那么就會以9開始,如log_file.9
rotate count:輪詢文件的個數,當個數滿了之后,會刪除最老的
size size:只有當原日志文件的大小達到指定的size時,才做輪詢,單位自定義
postrotate/endscript:在日志被輪轉后執行
prerotate/endscript:在日志被輪轉前並且有需要輪轉才執行
sharedscripts:當匹配文件夾里時,時間久后,會有很多以原文件加日期命名的輪詢日志,而我只需要最匹配最原始的文件做輪詢,這個選項就是為了做這個設置;如果沒有的話,被輪詢出來的日志再下一次輪詢時也會被匹配到也做輪詢
例:
nginx訪問日志每天做日志分割
/var/log/nginx/*log { create 0644 nginx nginx daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript }
結果為:
