logrotate实现日志切割方式(转储)

 更新时间:2023年05月11日 09:20:27   作者:运维@小兵  
这篇文章主要介绍了logrotate实现日志切割方式(转储),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

logrotate日志切割(转储)

背景

系统每天凌晨1:59查看/data/nginx/log日志文件的大小,如果小于10M,不做任何处理,如果大于等于10M,触发日志转储,

转储后/data/nginx/log的大小为0,并且会在/data/nginx/logs/下生成一个通过gzip压缩的以当前日期命名的.gz文件

注意:该配置算不上是日志切割,因为当日志文件为25M时,也会归档为一个文件,并不是以10M为单位进行分割,只能称为日志转储。

日志切割配置文件/etc/logrotate.conf

cat > /etc/logrotate.conf << EOF
/data/nginx/log {
    missingok
    notifempty
    create 0640 root root
    compress
    dateext
    olddir /data/nginx/logs/
    rotate 50
    size 10M
}
EOF

相关解释:

/data/nginx/log                #表示要做切割的日志文件名
missingok                      #在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误
notifempty                     #如果日志文件为空,轮循不会进行
create 0640 root root          #以指定的权限创建全新的日志文件
compress                       #在轮循任务完成后,使用gzip压缩归档文件
dateext                        #使用当前日期作为归档文件的命名格式
olddir /data/nginx/logs/       #指定归档文件存放到/data/nginx/logs/目录下,/data/nginx/logs/需提前创建
rotate 50                      #最多存储50个归档文件,当生成第51个归档文件时,第1个会被删除
size 10M                       #当监听文件达到10M时进行切割归档

设置定时任务

echo "59 01 * * * /usr/sbin/logrotate -v /etc/logrotate.conf &> /var/log/logrotate.log" >> /var/spool/cron/root
crond start

logrotate日志切割报错 文件不再同一个用户组下

分割日志时报错:

:error: skipping "/var/log/nginx/test.access.log" because parent
directory has insecure permissions (It's world writable or writable by
group which is not "root") Set "su" directive in config file to tell
logrotate which user/group should be used for rotation.

xx 文件所属用户

添加“su root xx”到/etc/logrotate.d/nginx文件中即可

如下:

/var/log/nginx/*.log {
        su root public
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        #ifempty
        create 0640 www-data adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux如何使用date命令获取系统时间

    linux如何使用date命令获取系统时间

    这篇文章主要介绍了linux如何使用date命令获取系统时间问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • centos6.5 安装hadoop1.2.1的教程详解【亲测版】

    centos6.5 安装hadoop1.2.1的教程详解【亲测版】

    这篇文章主要介绍了centos6.5 安装hadoop1.2.1的教程详细,该教程小编亲测过,非常不错,值得推荐给大家,需要的朋友可以参考下
    2018-08-08
  • linux中$符号的基础用法总结

    linux中$符号的基础用法总结

    这篇文章主要给大家介绍了关于linux中$符号的基础用法,文中通过示例代码介绍的非常详细,对大家学习或者使用linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • Linux系统用户如何添加到用户组

    Linux系统用户如何添加到用户组

    这篇文章主要介绍了Linux系统用户如何添加到用户组问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • RHCE桥接,免密登录和修改端口号介绍

    RHCE桥接,免密登录和修改端口号介绍

    大家好,本篇文章主要讲的是RHCE桥接,免密登录和修改端口号介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 详解Linux中如何安全地抹去磁盘数据

    详解Linux中如何安全地抹去磁盘数据

    离过职的小伙伴都知道,离职的时候需要上交公司电脑,但是电脑里面有许多我们的个人信息,所以我们就需要先把这些信息都删除,确保无法恢复之后才上交,下面我们来看一下在 Linux 中如何安全地抹去磁盘数据吧
    2023-10-10
  • 在 CentOS 8/RHEL 8 上安装和使用 Cockpit的方法

    在 CentOS 8/RHEL 8 上安装和使用 Cockpit的方法

    Cockpit 是一个基于 Web 的服务器管理工具,可用于 CentOS 和 RHEL 系统。最近发布的 CentOS 8 和 RHEL 8,其中 cockpit 是默认的服务器管理工具。这篇文章主要介绍了在 CentOS 8/RHEL 8 上安装和使用 Cockpit的方法,需要的朋友可以参考下
    2019-10-10
  • 详解bash中的初始化机制

    详解bash中的初始化机制

    这篇文章主要介绍了详解bash中的初始化机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Linux 服务器安全配置

    Linux 服务器安全配置

    Linux 服务器安全配置,需要的朋友可以参考下
    2012-03-03
  • CentOS 7中搭建NFS文件共享存储服务的完整步骤

    CentOS 7中搭建NFS文件共享存储服务的完整步骤

    如果仅仅只是希望搭建一个linux之间进行文件共享的服务器,而不是所有异构的系统之间共享的话,nfs是一个不错的选择。下面这篇文章主要给大家介绍了关于在CentOS 7中搭建NFS文件共享存储服务的完整步骤,需要的朋友可以参考下
    2018-11-11

最新评论