## 编写切割脚本

[root@wy ~]# vim /usr/local/nginx/sbin/nginx_logrotate.sh

#!/bin/bash

d=`date -d "-1 day" +%F`

[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log

mv /tmp/access.log /tmp/nginx_log/$d.log

/etc/init.d/nginx reload >/dev/null 2>&1

cd /tmp/nginx_log

gzip -f $d.log

解释说明:

date -d "-1 day" +%F 得到前一天的日期指定日期;

[ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log     mv /tmp/access.log /tmp/nginx_log/$d.log这两行表示/tmp/nginx_log目录不存在就创建,然后把日志移动并重命名(标记日期时间的);

/etc/init.d/nginx reload重新加载nginx的配置文件,目的是: 日志移动过去之后,肯定还要重新生成它(/tmp/access.log);

还可以再做一些后续的操作,比如日志比较大,我们可以进行一下压缩gzip,-f的目的是如果你的日志已经存在过,已经压缩过,它肯定会产生同名的一个压缩文件,它的目的就是不去提醒我们,强制地覆盖。

备注:可以把此脚本放到任务计划中,每天凌晨去执行这个脚本

## 执行脚本

[root@wy ~]# sh -x /usr/local/nginx/sbin/nginx_logrotate.sh

++ date -d '-1 day' +%F

+ d=2016-11-10

+ '[' -d /tmp/nginx_log ']'

+ mv /tmp/access.log /tmp/nginx_log/2016-11-10.log

+ /etc/init.d/nginx reload

重新载入 Nginx:                                           [确定]

+ cd /tmp/nginx_log

+ gzip -f 2016-11-10.log

## 查看到/tmp/access.log又回来了

[root@wy ~]# ls /tmp/access.log

/tmp/access.log

[root@wy ~]# cat !$

cat /tmp/access.log

## 查看到了日志压缩文件

[root@wy ~]# ls /tmp/nginx_log/

2016-11-10.log.gz