18.3 【Linux】登录文件的轮替(logrotate)

18.3.1 logrotate 的配置文件

logrotate 主要是针对登录文件来进行轮替的动作,他必须要记载" 在什么状态下才将登录文件进行轮替"的设置。logrotate 这个程序的参数配置文件在:

/etc/logrotate.conf

/etc/logrotate.d/

logrotate.conf 才是主要的参数文件,至于 logrotate.d 是一个目录, 该目录里面的所有文件都会被主动的读入 /etc/logrotate.conf 当中来进行!另外,在 /etc/logrotate.d/ 里面的文件中,如果没有规定到的一些细部设置,则以 /etc/logrotate.conf 这个文件的规定来指定为默认值!

logrotate 的主要功能就是将旧的登录文件移动成旧文件, 并且重新创建一个新的空的文件来记录,他的执行结果有点类似下面的图示:

图18.3.1、登录文件进行 logrotate 的结果

由上面的图示我们可以清楚的知道,当第一次执行完 rotate 之后,原本的 messages 会变成messages.1 而且会制造一个空的 messages 给系统来储存登录文件。而第二次执行之后,则messages.1 会变成 messages.2 而 messages 会变成 messages.1 ,又造成一个空的messages 来储存登录文件!那么如果我们仅设置保留三个登录文件而已的话,那么执行第四次时,则 messages.3 这个文件就会被删除,并由后面的较新的保存登录文件所取代!基本的工作就是这样。

下面是logrotate.conf中的默认内容:

由这个文件的设置我们可以知道 /etc/logrotate.d 其实就是由 /etc/logrotate.conf 所规划出来的目录,所以,其实我们可以将所有的数据都给他写入 /etc/logrotate.conf 即可,但是这样一来这个文件就实在是太复杂了,尤其是当我们使用很多的服务在系统上面时, 每个服务都要去修改 /etc/logrotate.conf 的设置也似乎不太合理。所以,如果独立出来一个目录,那么每个以RPM 打包方式所创建的服务的登录文件轮替设置, 就可以独自成为一个文件,并且放置到/etc/logrotate.d/ 当中即可。

一般来说,这个 /etc/logrotate.conf 是"默认的轮替状态"而已, 我们的各个服务都可以拥有自己的登录文件轮替设置。如果你的系统空间够大,并且担心出错及骇客的问题,那么可以:

将 rotate 4 改成 rotate 9 左右,以保存较多的备份文件。

大部分的登录文件不需要 compress,空间太小就需要compress,尤其是很占硬盘空间的 httpd 更需要 compress 的。

logrotate.conf 的设置语法是:

下面我们再以 /etc/logrotate.d/syslog 这个轮替 rsyslog.service 服务的文件,来看看该如何设置他的 rotate:

在上面的语法当中,我们知道正确的 logrotate 的写法为:

  • 文件名:被处理的登录文件绝对路径文件名写在前面,可以使用空白字符分隔多个登录文件;
  • 参数:上述文件名进行轮替的参数使用 { } 包括起来;
  • 执行脚本:可调用外部指令来进行额外的命令下达,这个设置需与 sharedscripts ....endscript 设置合用才行。至于可用的环境为:
  1. prerotate:在启动 logrotate 之前进行的指令,例如修改登录文件的属性等动作;
  2. postrotate:在做完 logrotate 之后启动的指令,例如重新启动 (kill -HUP) 某个服务!
  3. Prerotate 与 postrotate 对于已加上特殊属性的文件处理上面,是相当重要的执行程序!

那么 /etc/logrotate.d/syslog 内设置的 5 个文件的轮替功能就变成了:

  • 该设置只对 /var/log/ 内的 cron, maillog, messages, secure, spooler 有效;
  • 登录文件轮替每周一次、保留四个、且轮替下来的登录文件不进行压缩(未更改默认值);
  • 轮替完毕后 (postrotate) 取得 syslog 的 PID 后,以 kill -HUP 重新启动 syslogd

18.3.2 实际测试 logrotate 的动作

上面那个 -f 具有"强制执行"的意思,如果一切的设置都没有问题的话,那么理论上,你的/var/log 这个目录就会起变化。

相关推荐
daidaidaiyu2 小时前
一文学习 工作流开发 BPMN、 Flowable
java
威联通网络存储3 小时前
某大型制造企业基于威联通 NAS 的海量数据存储与容灾归档实践
网络·nas
SuniaWang3 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
sheji34163 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
m0_726965984 小时前
面面面,面面(1)
java·开发语言
xdscode4 小时前
Linux云服务器安装openclaw,并对接飞书通道
linux·服务器·飞书·openclaw
lswzw4 小时前
win11家庭版 安装 openclaw
服务器
xuhaoyu_cpp_java4 小时前
过滤器与监听器学习
java·经验分享·笔记·学习
LegendNoTitle5 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
2401_877274245 小时前
从匿名管道到 Master-Slave 进程池:Linux 进程间通信深度实践
linux·服务器·c++