1、日志文件的命名规则

日志轮替最主要的作用就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。

那么旧的日志文件改名之后,如何命名呢?

主要依靠/etc/logrotate.conf配置文件中dateext参数:

  • 如果配置文件中拥有dateext参数,那么日志会用日期来作为日志文件的后缀。

    例如secure-20200616。这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。
  • 如果配置文件中没有dateext参数,那么日志文件就需要进行改名了。

    当第一次进行日志轮替时,当前的secure日志会自动改名为secure.1,然后新建secure日志,用来保存新的日志。

    当第二次进行日志轮替时,secure.1会自动改名为secure.2,当前的secure日志会自动改为secure.1,然后也会新建secure日志,用来保存新的日志,以此类推。

总结:日志轮替步骤

  • 首先要切割日志文件,通过/etc/logrotate.conf配置文件进行配置。
  • 进行轮替。比如设置一天一个日志文件,我只保留30个日志文件,也就是说保留最近30天的日志文件,那么第31天,就会保留第31天的日志文件,同时删除第一天的日志文件,相当于一个队列结构。

注意:

有些服务的日志自带切割文件的功能,但是还是推荐使用Linux系统的自带日志轮替配置。因为Linux系统的自带日志轮替配置包括文件的切换和轮替,但有些服务自带的日志管理,只包含日志文件的切割功能,那多余的日志文件,就需要手工进行删除,比如apache服务中自带的日志管理。

还有一个点就是apache服务有自己的日志管理,你学会了,也就只能熟练操作apache服务的日志文件,但是其他的服务如果也有自己的日志管理功能,那么我们要学会很多种服务的日志管理方式,会非常的麻烦。

Linux系统自己的日志轮替功能,也就是通过/etc/logrotate.conf配置文件进行配置的日志轮替,理论上无论什么日志,RPM包方式安装服务的日志,源码包方式安装服务的日志,logrotate配置文件都能够识别。

RPM包方式安装服务的日志会自动的加入logrotate轮替,一般不需要你介入。

而源码包方式安装服务的日志,需要手工把该服务的日志加入到logrotate.conf配置文件中。

2、logrotate配置文件说明

[root@localhost ~]# vim /etc/logrotate.conf 

# see "man logrotate" for details
# rotate log files weekly
# 每周对日志文件进行一次轮替。
weekly # keep 4 weeks worth of backlogs
# 保存4个日志文件,也就是说如果进行了5次日志轮替,就会删除第一个备份日志文件。
rotate 4 # create new (empty) log files after rotating old ones
# 日志轮替时,自动创建新的日志文件。
# 以cron.log为例,会把cron.log文件改成日期格式的文件名,
# 然后在创建一个新的空的cron.log日志文件。
create # use date as a suffix of the rotated file
# 使用日期作为日志轮替文件的后缀。
# RedHat 5 默认是不开启的, RedHat 6 以后默认是开启。
dateext # uncomment this if you want your log files compressed
# 日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩。
# 也就是说除了现在正在存取的日志文件,其他的日志文件都是压缩格式的方式存储。
# compress # 说明:
# 以上日志信息配置为默认配置,如果需要轮替的日志没有设定独立的参数,那么都会遵守以上参数。
# 你可以理解为logrotate的通用配置或者是环境变量,对所有的日志都生效。
# 如果轮替日志配置了独立参数,那么独立参数优先级更高,也就是上面的通用配置失效。 # RPM packages drop log rotation information into this directory
# 包含/etc/logrotate.d/目录中所有的子配置文件。
# 也就是说会把这个目录中所有子配置文件读取进来,进行日志轮替。
# 换句话说就是/etc/logrotate.d目录中的文件,也是被logrotate管理的。
include /etc/logrotate.d # 以下两个轮替日志有自己的独立参数,如果和默认的参数冲突,则独立参数生效。
# no packages own wtmp and btmp -- we'll rotate them here
# 以下参数仅对此目录有效。
/var/log/wtmp {
# 每月对日志文件进行一次轮替。
monthly
# 建立的新日志文件,权限是0664,所有者是root,所属组是utmp组。
create 0664 root utmp
# 日志文件最小轮替大小是1MB。
# 也就是日志一定要超过1MB才会轮替,否则就算时间达到一个月,也不进行日志转储。
minsize 1M
# 保留一个日志备份。也就是只有wtmp和wtmp.1日志保留而已。
# 换句话说也就是除了我本身日志文件,再多保存一个日志文件。
rotate 1
} # 以下参数只对/var/log/btmp生效。
/var/log/btmp {
# 果日志不存在,则忽略该日志的警告信息。
missingok
monthly
create 0600 root utmp
rotate 1
} # system-specific logs may be also be configured here.

3、logrotate配置文件的主要参数

如下表:

参数 参数说明
daily 日志的轮替周期是每天。
weekly 日志的轮替周期是每周。
monthly 日志的轮替周期是每月。
rotate 数字 保留的日志文件的个数。0指没有备份。
compress 日志轮替时,旧的日志进行压缩。
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组。如create 0600 root utmp
mail address 当日志轮替时,输出的内容通过邮件发送到指定的邮件地址。如mail xxxx@lamp.net
missingok 如果日志不存在,则忽略该日志的警告信息。
notifempty 如果日志为空文件,则不进行日志轮替。
minsize 大小 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。
size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。如size 100k。(也就是只按大小,不按时间)
dateext 使用日期作为日志轮替文件的后缀。如secure-20200616
sharedscripts 在此关键字之后的脚本只执行一次。(要使用下面两个参数,该参数一定要使用)
prerotate/endscript 在日志轮替之前执行脚本命令。endscript标示prerotate脚本结束。
postrotate/endscript 在日志轮替之后执行脚本命令。endscript标示postrotate脚本结束。

这些参数中较为不好理解的应该就是prerotate/endscriptpostrotate/endscript参数了,我们利用"man logrotate"中的列子来解释下这两个参数。

例如:

# 日志轮替的是/var/log/httpd/中RPM包安装的apache正确访问日志和错误日志。
/var/1og/httpd/access.log
/var/1og/httpd/error.log
{
# 轮替5次。
rotate 5
# 信息发送到指定邮箱。
mail www@sina.com
# 日志大于100KB时才进行日志轮替,不再按照时间轮替。
size 100k # 以下脚本只执行一次。
sharedscripts
# 在日志轮替结束之后,执行以下脚本。
postrotate
# 重启apache服务的相关服务。
/usr/bin/killall -HUP httpd
# 脚本结束。
endscript
}

提示:

  • prerotatepostrotate主要用于在日志轮替的同时,执行指定的脚本,一般用于日志轮替之后重启服务。
  • 这里强调,如果你的日志是写入rsyslog服务的配置文件的,那么把新日志加入logrotate后,一定要重启rsyslog服务,否则你会发现虽然新日志建立了,但是数据还是写入了旧的日志当中。
  • 那是因为虽然logrotate知道日志轮替了,但是rsyslog服务却并不知道。
  • 同理,如果你的日志不是被rsyslog管理,如源码包安装的Apache、Nginx等服务,则需要重启Apache或Nginx服务,否则日志也不能正常轮替。
  • 所以通常操作的方式是,日志文件轮替完成之后,重启一下服务器,所有的相关服务都进行了重启,从而使轮替后的配置文件都能正常适用。

『学了就忘』Linux日志管理 — 92、日志轮替的更多相关文章

  1. 『学了就忘』Linux权限管理 — 55、文件特殊权限

    目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...

  2. 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍

    目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...

  3. 『学了就忘』Linux软件包管理 — 42、对RPM软件包的查询操作

    目录 1.查询RPM软件包是否安装 2.查询系统中所有已安装的RPM软件包 3.查询RPM软件包的详细信息 4.查询RPM软件包中的文件列表 5.查询系统文件属于哪个RPM包 6.查询RPM软件包所依 ...

  4. 『学了就忘』Linux软件包管理 — 44、在RPM包中提取文件

    目录 1.RPM包中文件的提取 2.在RPM包中提取文件的操作 (1)cpio命令介绍 (2)提取RPM包中文件 1.RPM包中文件的提取 为什么要做这个事呢? 在操作Linux系统的时候误删除一个文 ...

  5. 『学了就忘』Linux软件包管理 — 47、Linux源码包的安装和卸载

    目录 1.源码包安装服务的注意事项 2.源码包安装服务的过程 3.源码包安装服务的删除 4.源码包安装服务的启动 5.源码包安装服务的关闭 1.源码包安装服务的注意事项 (1)安装服务选择哪种软件包? ...

  6. 『学了就忘』Linux软件包管理 — 49、拓展:Linux中通过脚本安装程序

    目录 1.脚本程序简介 2.Webmin安装 (1)简介 (2)安装 (3)使用 1.脚本程序简介 脚本程序包并不多见,所以在软件包分类中并没有把它列为一类.它更加类似于Windows下的程序安装,有 ...

  7. 『学了就忘』Linux用户管理 — 50、用户管理相关文件详细说明

    目录 1.用户信息文件 2./etc/shadow影子文件 3./etc/group 组信息文件 4.组密码文件 5.用户的家目录 6.用户邮箱目录 7.用户模板目录 总结: 提示:严格的用户权限划分 ...

  8. 『学了就忘』Linux用户管理 — 51、用户管理相关命令

    目录 1.添加用户(useradd命令) 2.设定密码(passwd命令) 3.用户信息修改(usermod命令) 4.删除用户(userdel命令) 5.切换用户身份(su命令) 1.添加用户(us ...

  9. 『学了就忘』Linux权限管理 — 53、ACL权限详解

    目录 1.什么是ACL权限 2.开启ACL 3.ACL权限的相关命令 (1)设定ACL权限 (2)查询文件的ACL权限 (3)设置文件ACL权限给用户组 (4)给文件夹和里边的文件同时赋予ACL权限 ...

  10. 『学了就忘』Linux权限管理 — 54、sudo授权

    目录 1.什么是sudo授权 2. sudo授权说明 3.sudo命令的使用 示例1 示例2 示例3 1.什么是sudo授权 在Linux系统中,/sbin/和/usr/sbin/两个目录中的命令只有 ...

随机推荐

  1. 洛谷 P6295 - 有标号 DAG 计数(生成函数+容斥+NTT)

    洛谷题面传送门 看到图计数的题就条件反射地认为是不可做题并点开了题解--实际上这题以我现在的水平还是有可能能独立解决的( 首先连通这个条件有点棘手,我们尝试把它去掉.考虑这题的套路,我们设 \(f_n ...

  2. 实现一个简单的类似不蒜子的PV统计器

    内部的放到gitlab pages的博客,需要统计PV,不蒜子不能准确统计,原因在于gitlab的host设置了strict-origin-when-cross-origin, 导致不蒜子不能正确获取 ...

  3. 【Meta】16s rRNA和16s rDNA的区别

    在文章或宣传稿中经常看到两者滥用,实际上是不同的. 首先是各个字母的含义: 16S中的"S"是一个沉降系数,亦即反映生物大分子在离心场中向下沉降速度的一个指标,值越高,说明分子越大 ...

  4. 多组学分析及可视化R包

    最近打算开始写一个多组学(包括宏基因组/16S/转录组/蛋白组/代谢组)关联分析的R包,避免重复造轮子,在开始之前随便在网上调研了下目前已有的R包工具,部分罗列如下: 1. mixOmics 应该是在 ...

  5. seqtk抽取测序数据

    做数据比较的时候,由于同一个样本测序数据量不一致,需要抽取数据,控制数据量基本一致. 自己写脚本速度较慢,后面发现一个不错的工具:seqtk 原始数据抽取 如果只控制原始数据量一致,过滤低质量数据后直 ...

  6. shell 的 功能语句--1

    [1]说明性语句 (1)shell 程序和语句 shell 程序由零或多条shell语句构成. shell语句包括三类:说明性语句.功能性语句和结构性语句. 说明性语句: 以#号开始到该行结束,不被解 ...

  7. 用原生CSS编写动态字体

    HTML部分: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  8. day14搭建博客系统项目

    day14搭建博客系统项目 1.下载代码包 [root@web02 opt]# git clone https://gitee.com/lylinux/DjangoBlog.git 2.使用pid安装 ...

  9. CSS系列,三栏布局的四种方法

    三栏布局.两栏布局都是我们在平时项目里经常使用的,今天我们来玩一下三栏布局的四种写法,以及它的使用场景. 所谓三栏布局就是指页面分为左中右三部分然后对中间一部分做自适应的一种布局方式. 1.绝对定位法 ...

  10. Apache架构师的30条设计原则

    本文作者叫 Srinath,是一位科学家,软件架构师,也是一名在分布式系统上工作的程序员. 他是 Apache Axis2 项目的联合创始人,也是 Apache Software 基金会的成员. 他是 ...