nginx日志切割遇到的问题

背景:为了避免日志文件过大不方便查看,准备对日志切割,我用的linux系统自带的logrotate进行切割,具体切割参数请查询logrotate相关资料,下面只写出切割的配置,也是网上参考别人的文章的方法,但遇到了问题

新建文件
vi /etc/logrotate.d/nginx.log
/日志所在路径/*.log
{
daily
rotate 60
dateext
create 644 root root
postrotate
/bin/kill -HUP 反引号 cat nginx.pid路径 反引号
endscript
}

问题:1.无法控制每天切割的时间,默认都是在夜里3点多
2.日志切割之后,文件是生成了,可总是大小为0,发现nginx.pid丢失,为什么会丢失,开始思考这个问题

解决方法:经过多方查找资料

  1. 下面文件可以设置计划任务的执行时间,logrotate是每天轮转的,可以设置为24点轮转
    cat /etc/anacrontab
    RANDOM_DELAY=45 #最大延迟时间,改成0
    START_HOURS_RANGE=3-22 #只在03到22点之间执行,改成24
    1 5 cron.daily nice run-parts /etc/cron.daily
    #每天都执行/etc/cront.daily/目录下的脚本文件,logrotate的脚本就在这个文件下,大家一定要自己去确认,才能真正明白

真实的延迟RANDOM_DELAY+delay。这里的延迟是5分钟,加上上面的RANDOM_DELAY,所以实际的延迟时间是5-50之间,开始时间为03-22点,那么一般就是在03:05-03:50之间执行。
如果RANDOM_DELAY=0,那么表示准确延迟5min,即03:05执行
这就是为什么总是在3点多切割的原因

2.调用nginx -s reopen用来打开日志文件,这样nginx会把新日志信息写入这个新的文件中
这样完成了日志的切割工作, 同时切割过程中没有日志的丢失。
kill -USR1 等于 nginx -s reopen

切割成功的配置
{
daily
rotate 60
dateext
create 644 root root
postrotate
if [ -f /export1/logs/nginx.pid ]; then
kill -USR1 反引号 cat nginx.pid路径 反引号
fi
endscript
}

转载于:https://blog.51cto.com/12107094/2318611

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值