logrotate


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
}

 

結果為:
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM