使用 logrotate 每小时轮换文件? [关闭]

Posted

技术标签:

【中文标题】使用 logrotate 每小时轮换文件? [关闭]【英文标题】:Hourly rotation of files using logrotate? [closed] 【发布时间】:2014-10-18 13:15:48 【问题描述】:

我尝试设置位于 /tmp/hr_logs/ 的日志文件的日志轮换。为了进行设置,我在 linux 中使用了 logrotate,并且可以使用 /etc/logrotate.conf 中的以下配置每天轮换它

  /tmp/hr_logs 
  daily
  rotate 4

使用此配置,文件将每天轮换,系统将保留 4 个附加日期的日志文件副本 [格式:-YYYYMMDD]

现在,我尝试设置一组不同的日志文件,我需要每小时轮换一次,为此,我已经在 logrotate.conf 中完成了配置:

  /tmp/last_logs 
  hourly
  rotate 4

但这根本不起作用?有人可以请指导我吗?

【问题讨论】:

blog.sleeplessbeastie.eu/2018/07/11/… 【参考方案1】:

logrotate.conf 的联机帮助页包含关于 hourly 选项的重要建议:

日志文件每小时轮换一次。 请注意,通常 logrotate 配置为每天由 cron 运行。您必须更改此配置并每小时运行一次 logrotate 才能真正每小时轮换一次日志。

正如yellow1pl 所指出的,解决方案是将文件/etc/cron.daily/logrotate 复制到/etc/cron.hourly/ 目录中。这至少适用于 Debian,可能还有一些 Debian 衍生产品。

【讨论】:

这也适用于 CentOS 复制或移动文件?另外,我不应该在 /etc/logrotate.conf 中将“每日”更改为“每小时”吗? 我会进行符号链接,就好像脚本已更新一样,您将继承任何更改。此外,如果您使用 dateext 选项,您将需要重新格式化扩展名,以便您每天可以拥有多个 uniq 文件名。我使用以下。 dateext 日期格式 -%Y%m%d-%s 我用于符号链接的命令:ln -s /etc/cron.daily/logrotate /etc/cron.hourly/logrotate【参考方案2】:

每日日志轮换有/etc/cron.daily/logrotate 脚本。但是/etc/cron.hourly/ 目录中默认没有这样的脚本。复制此脚本,它应该可以正常工作。

【讨论】:

按照建议,我在 /etc/cron.hourly 下复制了 logrotate 但没有运气。 @Kishore 您是否也使用了“每小时”选项?通过阅读操作系统上的手册页,确保您的发行版支持它,man logrotate 您不想移动logrotate 而不是复制吗?否则会有logrotate同时运行两次的时候 我发现在将logrotate 移动到/etc/cron.hourly 后必须重新启动crond 服务。例如。在 CentOS 7 sudo systemctl restart crond @mulllhausen logrotate 默认情况下会锁定状态文件,如果已锁定则退出 - 因此即使在 cron.hourlycron.daily 计划中运行也没有问题在同一时刻。

以上是关于使用 logrotate 每小时轮换文件? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Logrotate实现Catalina.out日志每俩小时切割

我一直在尝试使用 logrotate 实用程序并将压缩日志移动到 s3,但是,它仅在强制完成时才会旋转

如何每小时运行一次 logrotate

检查和测试 logrotate 配置的更简单方法

mysqldump 抛出“拒绝访问”错误,但仅在通过 logrotate 运行时?

linux日志转储及logrotate命令使用