nginx入门详解(六)- 日志切割

上一章讲解了nginx的目录加密功能,本章重点介绍nginx的日志切割。

在第二章,我们探讨了nginx的常用命令,如果还不熟悉,可以去看着练习几遍。

我们可以通过"/usr/local/nginx/sbin/nginx -s"命令向nginx的主进程(master进程)发送信号,这些信号有stop、quit、reopen、以及reload。

那么其中的reopen,就是我们今天的主角,我们可以使用reopen来实现日志切割。

第一步:进入日志目录:

cd /usr/local/nginx/logs/

第二步:重命名日志文件:

]# mv access{,.$(date +%F)}.log

]# ls
access.2019-07-24.log   error.log  nginx.pid

ps:重命名后,nginx日志仍然会写入到"access.2019-07-24.log"文件中,并不会自动创建一个新的"access.log"文件。

即使你手动创建了一个新的"access.log"文件,nginx仍然会把日志写入到重命名后的"access.2019-07-24.log"文件中。

这是因为nginx进程读写日志文件时,是通过文件描述符去操作的,虽然我们修改了原"access.log"文件的文件名,但是原文件描述符与文件本身的对应关系仍然存在。

所以,重命名后,我们需要让nginx重新打开一个新文件,以便将新的日志写入到新文件中。

第三步:发送信号:

nginx -s reopen

执行完上述命令后,日志目录中自动生成了一个新的"access.log"文件,
再次访问nginx,会发现新生成的日志已经写入到了新生成的"access.log"文件中了。

原理解析:

发送信号,其实是执行:

kill -USR1 `cat /usrlocal/nginx/logs/nginx.pid`

以上两种方式都可以实现日志切割,你可以任意选择。

定期执行:

日志切割时企业中常规动作,我们不会每天去手工执行一遍命令,通常是让脚本自己执行,于是我们可以将这个动作写进任务计划,每天凌晨自动执行。

脚本:

#!/bin/bash
#by lutixia
#########################

s_log="/usr/local/nginx/logs/access.log"
d_log="/data/backup/nginx-$(date +%F).log"
d_log_dir="/data/backup"

#判断备份目录是否存在,不存在则创建
if [ ! -d "$d_log_dir" ];then
       mkdir -p "$d_log_dir"
fi

#判断原日志文件是否存在,存在则移动并改名
if [ -f "$s_log" ];then
        mv "$s_log" "$d_log"
fi

#以下两条命令任选其一:
#kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

/usr/local/nginx/sbin/nginx -s reopen

if [ $? -eq 0 ];then
    echo "$(date +%F) 日志切割成功"  
fi

写入任务计划:

在/var/spool/cron/root文件中添加如下代码,每天11:59分自动切割日志:

59  23  *  *  *  /bin/sh  nginx_cut_log.sh >>/tmp/nginx_cut.log 2>&1

到这里简单的日志切割工作就完成啦。

这将是nginx系列文章,可关注同名微信公众号:笨办法学linux ,获取最近文章更新及精品软件,软件持续更新中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维朱工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值