nginx日志切割

一、写一个nginx日志切割脚本
vim /usr/local/sbin/nginx_logrotate.sh

#!/bin/bash
d=date -d "-1 day" +%Y%m%d
[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log
mv /tmp/access.log /tmp/nginx_log/$d.log
/etc/init.d/nginx reload > /dev/null
cd /tmp/nginx_log/
gzip -f $d.log

然后写一个计划任务,每天0点0分执行脚本。

二、借助系统的logrotate 工具实现
vim /etc/logrotate.d/nginx
加入一下内容
/tmp/access_log { //日志的路径
Daily // 表示日志按天归档
Missingok // 表示忽略所有错误,例如在日志不存在的情况下
rotate 52 // 表示日志存放的个数,最多52
compress // 表示日志要压缩
delaycompress // 表示压缩除了当前和最近之外的所有其他版本
notifempty // 表示如果日志为空,则不归档。
create 644 nobody nobody // 定义归档日志的权限已经所属组,主。
sharedscripts // 表示所有日志共享此脚本,
postrotate // 后面跟轮换过日志之后要运行的命令
[ -f /usr/local/nginx/var/nginx.pid] && kill -USR1 cat /usr/local/nginx/var/nginx.pid
Endscript D// 结束。
}