QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

微信扫一扫 分享朋友圈

已有 1106 人浏览分享

开启左侧

分享CentOS7按天分割Nginx日志并定期删除日志文件的方法

[复制链接]
1106 0
  近日,对网站进行了功能优化,让服务器日志每天按日期自动分割,达到一定时间后自动删除,现将相关代码分享。
image.jpg
  首先,是分割脚本关键代码,代码如下:
  1. #!/bin/bash
  2. #设置log文件所在目录
  3. log_files_path="/website/logs/nginx/"
  4. log_files_dir=${log_files_path}
  5. #设置log文件名,注意不需要写.log扩展名,要分割多个log的话,名字用空格隔开
  6. log_files_name=(access error spider resource other)
  7. #注意,上面的access error spider等5个都是log文件名,具体请按自己情况来
  8. #设置nginx所程序在路径
  9. nginx_sbin="/usr/sbin/nginx"
  10. #设置你想让日志保留多少天
  11. save_days=7
  12. ############################################
  13. #程序功能实现代码 #
  14. ############################################
  15. #mkdir -p $log_files_dir
  16. log_files_num=${#log_files_name[@]}
  17. #分割日志文件,即将现日志文件移动并重命名为带日期日志文件
  18. for((i=0;i<$log_files_num;i++));do
  19.         mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}.log_$(date +%Y%m%d)
  20. done
  21. #删除超期日志文件
  22. find $log_files_path -mtime +$save_days -exec rm -rf {} \;
  23. #重新载入nginx配置,生成新log
  24. $nginx_sbin -s reload
复制代码
  将上面文件保存为cut_nginx_log.sh,上传到服务器,然后运行测试:
  1. [root@test]#sh cut_nginx_log.sh
复制代码
  如果报错提示:未预期的符号 `$'{\r'' 附近有语法错误,是因为windows和linux编码不同造成的,可以使用notepad++打开文件,右击右下角,转为Unix编码方式。
image.jpg
  如果不出意外,运行脚本成功后,会发现日志目录是下面这样:
image.jpg
  然后,我们需要将脚本添加到系统计划任务中,让它每天定时运行。使用命令:crontab -e
  1. [root@test]#crontab -e
复制代码
  然后按字母I键,使其进入编辑模式,输入:0 0 * * * sh /website/logs/cut_nginx_log.sh
  注意,后面脚本路径,请以自己的实际为准。
  然后按ESC键,再输入 :wq (英文冒号)后按回车,即可添加计划任务。系统会提示:crontab: installing new crontab。
  最后,可以输入命令:crontab -l (L的小写字母)查看当前计划任务。
  这样,每天0时0分,系统就会自动执行日志分割,再也不担心大日志文件影响系统性能了。

上一篇:防范爬虫流量攻击:Nginx限制同时段IP访问数量和频率
下一篇:基于纯真IP数据库的IP归属地批量查询工具(附Delphi源码)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

36

关注

177

粉丝

13657

主题
精彩推荐
热门资讯
网友晒图
  • 公众号

    微信公众号

  • 微信

    站长微信

Powered by Discuz! 在此致以诚挚谢意!

CopyRight © 2011-2024 wancili.com