文 - 篇  访客 -

关于linux下nginx定期清理问题


  分类:Linux  / 
更新:2023-08-31 12:11:17  /  创建:2022-08-18 10:34:44
不要删除

关于linux下nginx定期清理问题

nginx是一款非常棒的web服务器,但是在网站高访问量的情况下,每天的日志文件就会非常大。占用非常多的磁盘空间,因此要进行定期清理

工具/原料

  • CentOS6.4,nginx,shell

方法/步骤

  1. nginx日志文件需要手动分割,创建脚本文件clear_log.sh

文件路径/usr/local/nginx/clear_log.sh

vi clear_log.sh。输入如下内容

#!/bin/bash

cp /usr/local/nginx/logs/error.log /usr/local/nginx/error-$(date -d "yesterday" +"%Y%m%d").log

/#先复制原来的错误日志文件,请根据自己实际的日志路径填写

cat /dev/null > /usr/local/nginx/logs/error.log

/#清空错误日志文件

cp/usr/local/nginx/logs/access.log /var/log/nginx/access/access-$(date -d "yesterday" +"%Y%m%d").log

/#先复制原来的正常访问日志

cat /dev/null > /usr/local/nginx/logs/access.log

/#清空原来的正常访问日志 
  1. 创建dellog.sh文件,路径/usr/local/nginx
vi dellog.sh

#!/bin/sh

find /usr/nginx/logs/error -mtime +7 -type f -name \*.log | xargs rm -f

find /usr/nginx/logs/access -mtime +7 -type f -name \*.log | xargs rm -f

/#定期删除七天前的日志文件
  1. 启动linux下的计划任务,将刚才创建好的两个shell脚本加入此计划
vi root //根据此时登录的用户名,例如我此时登录的是root用户,输入如下内容

0 0 * * * /usr/nginx/clear_log.sh

/#每天0点执行/usr/nginx/clear_log.sh

0 0 * * * /usr/nginx/dellog.sh

/#每天 0点执行 /usr/nginx/dellog.sh

保存后退出,输入命令crontab root就会看到/var/spool/cron/文件夹下看到相应的副本文件root。至此完成nginx日志按天拆分与定期清除。

逻辑详解:比如现在是3月18日0点0分,系统会自动执行clear_log.sh与dellog.sh两个shell脚本。 clear_log.sh会把3月17日的日志文件分别生成为access_20140317.log与error_20140318.log,然后把原 来的access.log与error.log分别清空。dellog.sh则会自动判断该文件的创建时间,如果是十五天前的就会自动清除

END

注意事项

  • 1.很多时候我们都喜欢在windows下编辑shell文件然后上传到linux,这个时候需要注意fileformat。这样会导致shell 文件执行问题,所有shell文件执行出错都应该首先想到此问题。进入文件编辑模式输入:set ff可以看到fileformat。如果fileformat=dos则强制改为unix。:set ff=unix然后保存后退出即可
  • 2.文件权限问题,文件权限更改命令chmod 777 filename

不要删除

是日已过,命亦随减,如少水魚,斯有何乐?