centos下默認已安裝了logrotatenginx
rpm -ql logrotate-3.7.8-12.el6_0.1.x86_64 /etc/cron.daily/logrotate /etc/logrotate.conf /etc/logrotate.d /usr/sbin/logrotate /usr/share/doc/logrotate-3.7.8 /usr/share/doc/logrotate-3.7.8/CHANGES /usr/share/doc/logrotate-3.7.8/COPYING /usr/share/man/man5/logrotate.conf.5.gz /usr/share/man/man8/logrotate.8.gz /var/lib/logrotate.status
vi /etc/logrotate.d/mynginx /var/log/xxx.log { daily rotate 30 dateext dateformat -%Y%m%d%s #compress #delaycompress missingok notifempty #create 600 www www olddir arch #minsize 200M sharedscripts postrotate ps -A | grep 'gunicorn: maste'|cut -f1 -d' ' | xargs kill -HUP endscript }
說明:centos
daily
天天切換一次,其餘可用還有weekly
,monthly
rotate
在刪除最舊的日誌前保留幾份,這裏天天切一次的話保留30天dateext
日誌的後綴,默認是-%Y%m%d
,若是沒有此選項,日誌後綴是.1
,.2
諸如此類dateformat
配合dateext
一塊兒使用,可用的參數%Y%m%d%s
這4個compress
使用gzip壓縮delaycompress
配合compress
一塊兒使用,最新一個切換的日誌不壓縮missingok
切換中遇到日誌不存在忽略錯誤notifempty
空日誌文件不切換create
以哪一個用戶身份權限建立新日誌olddir
將日誌備份到此目錄,相對於日誌的目錄minsize
超過此大小就觸發日誌切換,但不會在知足的時間前切換size
與minsize
相似,區別是無論時間的限制,一知足大小就切換sharedscripts
對於prerotate
,postrotate
腳本塊而言,好比日誌是使用通配符/var/log/xxx*.log
,命令只會執行一次.默認是切一個日誌觸發一次.postrotate/endscript
切換日誌後執行的腳本,基本是讓進程從新讀取配置,由於日誌文件句柄切換並新建後,再也不關聯進程.使用kill -HUP
較多,使用程序自帶的也可,好比nginx -s reload
.其餘參數
man logrotate
post
查看配置有無問題測試
logrotate -d /etc/logrotate.d/mynginx
手動切換一第二天志日誌
logrotate -vf /etc/logrotate.d/mynginx
//ENDcode