简述nginx日志管理切割日志(亲测可行)

简述nginx日志管理切割日志(亲测可行)

大家好,又见面了,我是全栈君。

 日志切割

nginx的日志文件没有rotate功能 编写每天生成一个日志,我们可以写一个nginx日志切割脚本来自动切割日志文件

第一步就是重命名日志文件 (不用担心重命名后nginx找不到日志文件而丢失日志。在你未 重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,Linux是靠文件描述 符而不是文件名定位文件 )

第二步向nginx主进程发送USR1信号

 nginx主进程接到信号后会从配置文件中读取日志文件名称
重新打开日志文件 (以配置文件中的日志名称命名) ,并以工作进程的用户作为日志文件 的所有者 重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开 的日志文件
工作进程立刻打开新的日志文件并关闭重名名的日志文件 然后你就可以处理旧的日志文件了。[或者重启nginx服务]

nginx日志按每分钟自动切割脚本如下 :

新建shell脚本:

vi   /opt/nginx/nginx_log.sh
#!/bin/bash
#设置日志文件存放目录
#LOG_HOME="/home/wwwlogs/"
 LOG_HOME="/usr/local/nginx/logs"
#备分文件名称
LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".access.log
#重命名日志文件
mv ${LOG_HOME}/access.log ${LOG_HOME}/${LOG_PATH_BAK}
#向nginx主进程发信号重新打开日志
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

创建crontab设置作业

设置日志文件存放目录crontab -e

*/1 * * * *  sh /opt/nginx/nginx_log.sh

 

自动删除7天前的指定日志文件

# touch auto-del-7-day-ago-log.sh
# chmod +x auto-del-7-day-ago-log.sh
# vim auto-del-7-day-ago-log.sh
  find /www/cookie.com/log.cookie.com/ -mtime +7 -name "push*.log" -exec rm -rf {} \;
 
# crontab -e
 10 0 * * * /opt/sh/auto-del-7-day-ago-log.sh > /dev/null 2>&1

find /www/cookie.com/log.cookie.com/ -mtime +7 -name “push*.log” -exec rm -rf {} \;

#/www/cookie.com/log.cookie.com/目录下

#-mtime +7 7天前的文件

#-name “push*.log” 文件名称匹配push*.log

# -exec rm -rf 强制删除,包含目录

 10 0 * * * /opt/sh/auto-del-7-day-ago-log.sh > /dev/null 2>&1

#每天凌晨0点10分执行

参考:https://blog.csdn.net/Cookie_1030/article/details/81737336

超过90天的日志文件 删除

00 03 * * * find /home/connect/nginx/logs/ -type f -mtime +90 -delete
#切割日志 
         if ($time_iso8601 ~ '(\d{4}-\d{2}-\d{2})') {
               set $tttt $1;
          }
         access_log  /home/wwwlogs/access-$tttt.log ;

=========下面 记录我出现的问题:==========

在介绍问题之前,介绍一个命名,时刻查看当前正在执行的定时任务

tail -f /var/log/cron

问题1.反引号问题,导致 kill 关闭掉进程时出错

简述nginx日志管理切割日志(亲测可行)

错误写法

kill -USR1 cat `/usr/local/nginx/logs/nginx.pid`

正确写法

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

问题2:权限问题

大家都知道,普通用户在重启nginx服务的时候,需要使用root超级用户权限

sudo service nginx restart

所以定时任务,需要切换到root用户使用root权限去执行定时任务

[root@vagrant-centos7 logs]# crontab -l
* * */1 * *  sh /usr/local/nginx/logs/nginx_log.sh  #一天生成一个日志文件

添加定时任务后需要重启crond 服务

[root@vagrant-centos7 logs]# service crond restart
Redirecting to /bin/systemctl restart crond.service
每分钟产生日志文件
这个是每分钟产生定时日志文件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111884.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Navicat Premium 15激活码_通用破解码

    Navicat Premium 15激活码_通用破解码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」

    让Web页面中的编辑器支持黏贴或直接拖拽来添加图片「建议收藏」让Web页面中的编辑器支持黏贴或直接拖拽来添加图片

  • 国内常用NTP服务器地址及IP(阿里云时间服务器)

    国内常用NTP服务器地址及IP(阿里云时间服务器)210.72.145.44(国家授时中心服务器IP地址)133.100.11.8日本福冈大学time-a.nist.gov129.6.15.28NIST,Gaithersburg,Marylandtime-b.nist.gov129.6.15.29NIST,Gaithersburg,Marylandtime-a.timefreq.bldrdoc.gov132.

  • 网络爬虫——正则表达式语法

    网络爬虫——正则表达式语法正则表达式基础讲解一、什么是正则表达式在网络爬虫将网页内容爬取的时候,有一个关键的步骤就是对我们关注的信息进行提取,正则表达式就是用于信息筛选提取的强大工具,并且学习简单,所以建议大家掌握。Python正则表达式语句re.compile(“正则表达式”).findall(“原字符串”)1.匹配符普通字符 正常匹配其中的字符。\n 匹配换行符。\t 匹配制表符。\…

  • idea注释模版配置(吐血推荐!!!)[通俗易懂]

    idea注释模版配置(吐血推荐!!!)[通俗易懂]idea注释模版配置idea作为越来越多程序员使用的开发工具,平时的代码注释也非常的关键,下面介绍一下类上注释和方法上注释,方便大家的开发配置,同时也为自己以后配置留一份记录(毕竟每次换环境都需要重新配置一遍)1、新建类的时候自动添加类注释(1)按照上图的提示,找到位置1的FileandCodeTemplates(2)选择右侧的Files选项卡,选择位置2的Class(如果需要设置接口和枚举的注释模版,只需要选择Interface和Enum,按照步骤3配置一下就ok了)(3)在

  • 按位取反~运算_按位与按位或按位异或运算符

    按位取反~运算_按位与按位或按位异或运算符按位取反~运算首先我们来看按位取反的概念按位取反运算符:对数据的每个二进制位取反,即把0变成1,把1变成0.即~x=-x-1这里按照定义9的二进制为00001001其按位取反为11110110结果为-10这个过程没有任何问题,但是如果忘记了负数的二进制表达方式,就会对这个结果产生疑问,为什么11110110表示-10而不是503?理解按位取反的关键是理解11110110为什么表示-10,也就是负数的二进制表达方式。现在计算机普遍使用补码表示负数。知道补码,求源码的方式是:值取反再加1。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号