Nginx日志切割脚本(按天切割)

小柒博客 Shell1 78.1K3字数 984阅读3分16秒阅读模式

Nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。

本文实现的功能是在每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2018-5-20.log,下面话不多说了,来看看详细的实现方法吧。

[root@localhost ~]# vim /data/scripts/auto_cutting_nginx_log.sh

脚本内容如下:

#!/bin/bash
#2018-5-20 21:24:20
#Automatic Cutting of Nginx logs

nginx=(
    [0]=access.log
    [1]=/usr/local/nginx
    [2]=access_`date +%Y%m%d`.log
    [3]=error.log
    [4]=error_`date +%Y%m%d`.log
    [5]=`ps -ef |grep nginx|awk '/master/ {print $2}'`
)

# 分割日志
mv ${nginx[1]}/logs/${nginx[0]} ${nginx[1]}/logs/${nginx[2]}
mv ${nginx[1]}/logs/${nginx[3]} ${nginx[1]}/logs/${nginx[4]}
#kill -USR1 PID向Nginx主进程发送USR1信号。USR1信号是重新打开日志文件
kill -USR1 ${nginx[5]}
if [ $? -eq 0 ]
then
echo -e "\033[32m The ${nginx[2]} Cutting Successfully \033[0m"
echo -e "\033[32m The ${nginx[4]} Cutting Successfully \033[0m"
fi
# 定时任务

配置crontab每天凌晨00:00定时执行这个脚本

[root@localhost ~]# crontab -e

# 输入以下内容并保存

0 0 * * * /bin/sh /data/scripts/auto_cutting_nginx_log.sh

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如本文“对您有用”,欢迎随意打赏,谢谢!

继续阅读
Wechat
微信扫一扫,加我!
weinxin
微信公众号
微信扫一扫,关注我!
weinxin
Shell最后更新:2024-1-24
小柒博客
  • 本文由 小柒博客 发表于 2018年9月10日21:32:56
  • 声明:本站所有文章,如无特殊说明或标注,本站文章均为原创。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。转载请务必保留本文链接:https://www.yangxingzhen.com/1454.html
    • 运维老司机
      运维老司机 6

      亲测,写的不错,感谢博主 :razz:

    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    拖动滑块以完成验证