根据Unix和Linux管理手册和man
,logrotate的有选项daily
,weekly
以及monthly
,但有一种方法来添加一个hourly
选项?
本博客文章中提到,您可以设置size 1
和删除的时间选项(如:daily
),然后手动调用logrotate
与cron
-我想是这样
logrotate -f /etc/logrotate.d/my-hourly-file
Run Code Online (Sandbox Code Playgroud)
但是有没有更优雅的每小时轮换日志的解决方案?
Nil*_*ils 24
取决于您的操作系统。一些(全部?)Linux 发行版有一个目录/etc/cron.hourly
,您可以在其中放置要每小时执行的 cron 作业。
其他人有一个目录/etc/cron.d/
。在那里,您可以使用 crontab 条目的常用 cron 设置(并且您必须指定用户名)放置作为任何特殊用户执行的 cron 作业。
如果您使用其中任何一个而不是标准日志轮换脚本,/etc/cron.daily/
您应该将该脚本复制cp /dev/null
到原始位置。否则它将通过 logrotate 补丁更新重新激活。
对于正确的每小时轮换,还要注意未设置dateext
指令。如果是这样,默认情况下,第一个旋转文件将获得当前日期的扩展名,如 YYYYMMDD。然后,第二次 logrotate 将在同一天内激活,即使超过了阈值,它也会简单地跳过轮换。size
原因是要旋转的文件的新名称已经存在,并且 logrotate 不会将内容附加到现有的旧文件中。例如在 RHEL 和 CentOS 上,dateext
指令默认在/etc/logrotate.conf
. 删除或注释该行后,旋转的文件将简单地获得一个运行编号作为扩展名,直到达到该rotate
值。这样,一天可以进行多次轮换。
小智 10
只是添加到 Nils 答案中,如果logrotate
在 Debian 或 Ubuntu 机器上更改脚本的位置,使用它可能更安全,dpkg-divert
而不仅仅是复制文件并复制/dev/null
到原始位置,例如:
dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
59073 次 |
最近记录: |