当我们 网站正常工作的时候,每次访问,我们的access.log日志文件都会去记录,时间一长,这个日志文件肯定会
变得很大,撑爆我们的磁盘空间,这个时候呢我们要把这个日志文件进行切割,按日去记录,然后规定删除多少天之前的日志文件。

nginx没有像Apache那样的切割工具。需要我们去写一个脚本来实现

[root@localhost vhosts]# vim /usr/local/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
cd /tmp/nginx_log/
gzip -f $d.log

在/usr/local/sbin/这个目录下面写一个nginx_logrotate.sh脚本文件,输入上面的内容

[root@localhost vhosts]# sh -x /usr/local/sbin/nginx_logrotate.sh
++ date -d '-1 day' +%F

  • d=2016-06-24
  • '[' -d /tmp/nginx_log ']'
  • mkdir /tmp/nginx_log
  • mv /tmp/access.log /tmp/nginx_log/2016-06-24.log
  • /etc/init.d/nginx reload
    重新载入 Nginx: [确定]
  • cd /tmp/nginx_log/
  • gzip -f 2016-06-24.log

执行这个脚本,加-x可以看到执行的过程

[root@localhost vhosts]# ls /tmp/access.log
/tmp/access.log

可以看到access.log文件还在

[root@localhost vhosts]# cd /tmp/nginx_log/
[root@localhost nginx_log]# ls
2016-06-24.log.gz

在这个目录下面呢,已经生产了一个压缩文件,则表示切割完成

要每天执行这个日志文件切割呢,需要要我们要执行的sh -x /usr/local/sbin/nginx_logrotate.sh这个脚本命令
加入到计划任务当中,计划一个时间让它每天去执行。