nginx日志切割

Nginx日志切割

当我们 网站正常工作的时候,每次访问,我们的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这个脚本命令
加入到计划任务当中,计划一个时间让它每天去执行。

转载于:https://blog.51cto.com/ringo/2356449

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值