CentOS下nginx日志切割 logrotate+crontab

前言

Logrotate程序是CentOS内置的一个日志文件管理工具。用来把旧的日志文件更名或删除,并创建新的日志文件,我们把它叫做“转储”。是个使日志轮替的程序,有了它就不用看着自己的日志体积一天天的变大,而可以根据你自己的需求来设定日志转储。

logrotate 的主要配置文件是:/etc/logrotate.conf ,以及 /etc/logrotate.d/ 目录下面放置自定义的一些配置文件。比如我们可以将nginx 的相关轮转日志放到 /etc/logrotate.d/ 目录下。logrotate 在运行的时候会执行 者两个目录下的配置。下面我们以nginx 的日志轮转日志为例进行配置。

步骤一 、编写配置文件

/usr/local/nginx/logs/*.log{
        #每天进行轮转
        daily
        #保留20个日志文件
        rotate 20
        #当日志文件大于100k后进行日志轮转 
        size 100k
        #指定新建的日志文件权限以及所属用户和组
        create 644 root root
        #日志文件名中增加时间
        dateext
        # 结合dateext 实现文件的命名
        dateformat -%Y%m%d%H-%s
        #忽略错误
        missingok
        #copytruncate
        #分享脚本,如果没有配置这个,日志目录下有多个日志时,下面的脚本会执行多次
        sharedscripts
        postrotate
                 if [ -f /usr/local/nginx/logs/nginx.pid ]; then
                         kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
                 fi
        endscript
}

步骤二、 关闭 SElinux 否者会导致日志无法正常的切割

临时关闭:

setenforce 0
或
setenforce Permissive

永久关闭

vi /etc/selinux/config
 将配置文件中
SELINUX=enforcing 改为:SELINUX=disabled 
保存配置文件
reboot #重启系统
 

步骤三、自定义日志滚动执行时间

由于 系统默认的logrotate 是每天的 3-22点 随机选择一个时间,
在这里插入图片描述

可能不太符合我们的要求,这个时候就可以自定义一个任务,在每天的23:59分执行日志滚动:

#每天23点59分执行一次 切割nginx 日志 并将运行日志放到 logrotate.splitlog 文件中
59 23 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx  >>/usr/local/nginx/logs/logrotate.splitlog 2>&1

第二天看到运行结果如下图:

在这里插入图片描述

常用命令:

查看logrotate的运行状态:cat /var/lib/logrotate/logrotate.status

查看crontab 的运行日志: cat /var/log/cron

参考链接:

  1. logrotate滚动日志失败

  2. 你真的搞懂logrotate了吗?

  3. Linux crontab 命令

  4. Linux logrotate命令

  5. logrotate 的使用简介

  6. 日志切割小结

  7. Linux自带神器logrotate详解

  8. logrotate切割日志后,新的日志还是写入到老的日志文件中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CentOS下,可以使用logrotate工具来进行日志切割。 1. 安装logrotate 如果你的系统中没有安装logrotate,可以使用以下命令进行安装: ``` sudo yum install logrotate ``` 2. 创建日志切割配置文件 在/etc/logrotate.d/目录下创建一个新的配置文件,例如mylog: ``` sudo nano /etc/logrotate.d/mylog ``` 在该文件中,你可以指定需要切割日志文件、切割的频率、保留的备份文件数等参数。以下是一个示例配置文件: ``` /var/log/mylog.log { daily rotate 7 compress delaycompress missingok notifempty create 644 root root } ``` 解释一下各个参数的含义: - daily:表示每天切割一次日志文件。 - rotate 7:保留最近7个备份文件。 - compress:使用gzip进行压缩。 - delaycompress:在下一次切割时才进行压缩。 - missingok:如果日志文件不存在,也不报错。 - notifempty:如果日志文件为空,也不切割。 - create 644 root root:在切割后创建一个新的空日志文件,并设置权限为644,属主为root。 3. 测试日志切割配置 可以使用以下命令来测试配置文件是否正确: ``` sudo logrotate -d /etc/logrotate.d/mylog ``` 该命令会模拟执行日志切割操作,并输出详细的日志信息。如果没有错误提示,则说明配置文件正确。 4. 自动化日志切割 默认情况下,logrotate会自动执行/etc/cron.daily/logrotate脚本,该脚本会对所有在/etc/logrotate.d/目录下找到的配置文件进行日志切割。因此,你无需手动执行日志切割命令,logrotate会自动按照配置文件进行切割

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T-OPEN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值