如何每天自动更改文件的名称

如何每天自动更改文件的名称

我是 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

等等。

相关内容