我的/etc/crontab
文件中有以下条目,以确保每天的 cronjobs 在凌晨 4:25 运行。这是此文件中唯一的条目daily
:
25 4 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
我的内容/etc/cron.daily/
包括logrotate
:
# ls -l /etc/cron.daily/
...
-rwxr-xr-x 1 root root 377 Jan 21 2019 logrotate
这是下的 logrotate 配置/etc/logrotate.d/
/var/log/remote/custom/*.log
{
rotate 180
daily
missingok
notifempty
compress
delaycompress
sharedscripts
# force rsyslog to refresh file descriptor
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
为什么当我检查 的内容时 /var/lib/logrotate/status
,我看到日志文件在午夜而不是凌晨 4:25 轮换?
"/var/log/remote/custom/cust.log" 2020-11-4-0:0:39
操作系统:Ubuntu 20.04 LTS
内核:Linux 5.4.0-40-generic
您似乎忽略了 /etc/anacrontab,anacron 可以在其中找到评估 /etc/cron.daily(和其他)的时间。
此外,我远离 systemd 的众多原因之一。检查 /etc/cron.daily/logrotate 的第一行:
对于Debian用户,您可能认为它在 6.25 (/etc/crontab) 运行,但从最近的几个版本开始,它运行在 00.00 并且在systemd上配置!
旧 /etc/crontab :
如果你想改变 systemd 的执行时间,你必须编辑这个文件: /etc/systemd/system/timers.target.wants/logrotate.timer
默认情况下它是:
如果您想每天在 6.20 运行它:
(然后我重新启动了系统,但我不确定是否有必要!)