我放入一个logrotate
配置文件/etc/logrotate.d/
并期望日志在一致的时间轮换;但是,他们不...日志轮换时间似乎是随机的 +/- 一小时。
为什么日志轮转开始时间是随机的,我该如何更改?
信息:我的 logrotate 配置文件看起来像这样......
/opt/backups/network/*.conf {
copytruncate
rotate 30
daily
create 644 root root
dateext
maxage 30
missingok
notifempty
compress
delaycompress
postrotate
## Create symbolic links in daily/
PATH=`/usr/bin/dirname $1`;
FILE=`/bin/basename $1`;
/bin/ln -s $1 $PATH/daily/$FILE
endscript
}
关键是知道 CentOS 运行 /etc/cron.{daily,weekly,monthly} 中的脚本
anacron
.../etc/anacrontab
正在设置RANDOM_DELAY
,它会按照您的预期进行(它会RANDOM_DELAY
在开始工作前延迟几分钟)...设置
RANDOM_DELAY=0
/START_HOURS_RANGE=3
修复问题...编辑
经过深思熟虑,我将删除
anacron
并安装普通的 vixiecron
...不是答案,但我最近出于另一个原因试图解决这个问题,但找不到任何关于 Redhat 6、Centos 等如何运行 cron 的文档。这是我逆向工程的内容:
crond
仍然在系统启动时运行 - 它加载所有文件/etc/cron.d
/etc/cron.d/0hourly
运行所有文件/etc/cron.hourly
/etc/cron.hourly/0anacron
跑anacron
/etc/anacrontab
/etc/anacrontab
运行(通过run-parts
)/etc/cron.daily
,/etc/cron.weekly
并且/etc/cron.monthly
因此,它比以前的版本更复杂。
可以通过将每小时、每周和每月的条目添加回
/etc/crontab
(现在为空)来恢复旧行为,但anacrontab
也需要更新。这可能会或可能不会破坏未来的更新......其他答案包括如何但不一定是为什么。原因是为了防止同时进行的每晚 cron 作业破坏您的基础设施。(想象一下共享存储,或者可能有 1000 台服务器在一台 VM 主机上运行,或者只是每晚运行一些网络服务的作业。)
cron.daily
我总是通过将特定的日志轮换作业从cron.d
. 这样,您仍然可以交错运行诸如 updatedb 之类的服务,其中时间确实不是必需的,但日志轮换的时间是一致的。当然,当你达到一定大小时,无论如何你都希望将所有日志从主机发送到日志服务器,然后各个节点上文件的轮换时间就不那么重要了,因为那些只是为了方便(通常在文件尾部之后)或作为最后的后备手段。然后,您肯定会将日志服务器上的轮换设置为系统的。