我是 Linux/CentOS 的新手,现在遇到了一点问题。
我的 CentOS7 服务器每天通过 Logrotate 记录所有邮件日志,并将其移动到文件夹/var/log/old_maillogs
。现在,日志保存的名称类似于:
Maillog-20230721
我希望它们的名字能够根据它们的年龄而改变,这样如果日志只有一天,它的名字就会是:
Maillog-1
第二天,文件名称更改为:
Maillog-2
等等。
这是否可能?如果可能的话,让它工作起来最聪明的方法是什么?我已经阅读了很多关于每天执行一次的脚本,但是话又说回来,我该如何编写脚本,以便它识别文件夹中有多少个日志?
这是我当前的配置:
/var/log/maillog{
daily
rotate 365
postrotate
Systemctl restart rsyslog.service
endscript
mailfirst
olddi /var/log/old_maillog
}
答案1
请参考logrotate手册页选项“开始计数”
开始计数
这是用作轮换基数的数字。例如,如果您指定 0,则日志将以 .0 扩展名创建,因为它们是从原始日志文件轮换而来的。如果您指定 9,则日志文件将以 .9 扩展名创建,跳过 0-8。文件仍将按照 count 指令指定的次数轮换。
答案2
正如@asktyagi 所说。要使用的正确参数是“开始计数”。
最初它对我来说不起作用,那是因为我没有禁用“使用旋转文件的数据扩展名”参数,该参数称为nodateext
。
因此工作配置如下所示:
/var/log/maillog{
daily
rotate 365
postrotate
Systemctl restart rsyslog.service
endscript
mailfirst
olddi /var/log/old_maillog
start 1
nodateext
}
此配置每天保存日志并将扩展名重命名为数字,相当于日志的旧版本。
所以第一天它被称为 -maillog.1
第二天它被称为 -maillog.2
等等。