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 这个目录就会起变化。

相关推荐
l1x1n02 分钟前
网络安全概述:从认知到实践
网络
罗曼蒂克在消亡2 分钟前
2.3MyBatis——插件机制
java·mybatis·源码学习
鄃鳕2 分钟前
HTTP【网络】
网络·网络协议·http
存储服务专家StorageExpert13 分钟前
DELL SC compellent存储的四种访问方式
运维·服务器·存储维护·emc存储
_GR14 分钟前
每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java
java·数据结构·c++·算法·动态规划
蜡笔小新星15 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
无限大.27 分钟前
c语言200例 067
java·c语言·开发语言
余炜yw29 分钟前
【Java序列化器】Java 中常用序列化器的探索与实践
java·开发语言
攸攸太上29 分钟前
JMeter学习
java·后端·学习·jmeter·微服务
Kenny.志32 分钟前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端