nginx日志文件按天记录定时清理循环记录
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx日志文件按天记录定时清理循环记录,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1182字,纯文字阅读大概需要2分钟。
内容图文
问题
nginx日志默认记录在一个文件access.log中,时间长了会导致日志文件特别大,甚至磁盘占满。
解决方案
使用以下方法,将access.log文件每天一个,然后清过15天以前的文件。
方法
创建clearNginxLog.sh文件
#!/bin/bash
LOG_PATH="/data/nginx/log/"
save_days=1
YESTERDAY=$(date -d "yesterday" +%Y%m%d)
echo "———————————————–"
echo "运行时间:[$(date +"%Y-%m-%d %H:%M:%S")]"
#删除指定日期以前的文件
echo "删除[$save_days]天以前的日志文件"
#find $LOG_PATH -mtime +$save_days -exec rm -rf {} \;
find $LOG_PATH -mtime +$save_days -type f -name \*.log | xargs rm -f
# 循环文件重命名
echo "循环文件重命名"
#for f in $LOG_PATH*.log; do cp $f ${f%.html}.php; done
for var in $LOG_PATH*.log; do mv "$var" "${var%.log}_$YESTERDAY.log"; done
#向nginx主进程发送USR1信号,重新打开日志文件,否则会继续往mv后的文件写数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。如果不这样操作导致日志切割失败。
echo "向nginx发送信号"
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk ‘{print $2}‘`
echo "清理完成"
echo "———————————————–"
将文件上传到服务器上,
然后在crontab中添加任务
crontab -e
每天0点执行
0 0 * * * /data/nginx/conf/clearNginxLog.sh >> /var/log/clearNginx.log 2>&1
:q!退出
:wq保存退出
然后重启crontab服务
root@castle:~# /etc/init.d/cron restart
[ ok ] Restarting cron (via systemctl): cron.service.
root@castle:~#
原文:https://www.cnblogs.com/zhupengfei/p/14787060.html
内容总结
以上是互联网集市为您收集整理的nginx日志文件按天记录定时清理循环记录全部内容,希望文章能够帮你解决nginx日志文件按天记录定时清理循环记录所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。