问题

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:~#

最新文章

  1. IntelliJ IDEA 教程设置讲解
  2. 大理石在哪里UVa 10474
  3. CSS折行小记
  4. Regsvr32.exe 用法
  5. SSO系统的分析与架构
  6. Hibernate使用原生sql语句
  7. Debian apt-get 无法补全
  8. 跟我一起学extjs5(05--主界面上增加顶部和底部区域)
  9. c语言入门经典必背18个程序
  10. SPOJ PGCD (mobius反演 + 分块)
  11. 使用单例模式实现自己的HttpClient工具类
  12. JS中定义类的方法<转>
  13. jquery简单的插件
  14. Liftoff Software | Next stop, innovation
  15. Bootstrap3.0学习第三轮(栅格系统案例)
  16. insertRule()与addRule()创建规则
  17. hibernate系列笔记(3)---持久化对象
  18. ASP.NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID(应用ID)和AppSecret(应用密钥)取得网页授权openid
  19. Spark操作HBase问题:java.io.IOException: Non-increasing Bloom keys
  20. VIM编辑器操作命令积累

热门文章

  1. EntityFrameworkCore之工作单元的封装
  2. Detach blobs with a contact point
  3. java例题_44 一个偶数总能表示为两个素数之和
  4. [Azure Devops] 使用 Azure Repos 管理代码
  5. java面试-CAS底层原理
  6. 设计原则:里式替换原则(LSP)
  7. 【Redis破障之路】三:Redis单线程架构
  8. PowerBI开发 第十八篇:行级安全(RLS)
  9. Vue学习(二)-Vue中组件间传值常用的几种方式
  10. 【工具类】Stream流构建指定长度的时间集合