我无法使用这个虚拟配置文件(我将它放在etc/logrotate.d中):
/var/log/test_log/mylogfile {
copytruncate
dateext
rotate 3
compress
missingok
size=+2
}
我写入日志(echo "hello world" > /var/log/test_log/mylogfile)但是它不起作用。
执行 cat /etc/crontab 显示:
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
我后来将输出重定向到以下方式:
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons > /var/log/test_log/log_logrotate
但什么也没发生。
我是否应该在 etc/crontab 中添加另一行来强制 cron.dayly 像在 Ubuntu 中一样发生:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
或者问题可能出在 /usr/lib/cron/run-crons 文件中??
我在 SUSE Linux Enterprise Server 11 SP2 下
答案1
我想我找到了问题的答案。这个问题很棘手,因为“Linux 的新版 Cron 运行方式可能与旧版略有不同“和我以前习惯的不一样。
现在 Cron 似乎由脚本 usr/lib/cron/run-crons 组成,该脚本检查 /var/spool/cron/lastrun/ 中的 cron.dayly 是否超过一天(默认情况下,它会检查自上次运行以来是否超过或正好是 1440 分钟)。或者,如果我们想让 cron.dayly 在固定时间运行,我们应该将DAILY_TIME
/etc/sysconfig/cron 文件中的变量设置为一个时间(即:“12:00”),它将每天在该时间运行(15 分钟内)。
注意(来自 /etc/sysconfig/cron 注释):由于 cron 脚本每 15 分钟才运行一次,因此它只会在 xx:00、xx:15、xx:30、xx:45 运行,而不是在您设置的准确时间运行。
我找到了答案这里:
答案2
当给定时间段等时weekly
,或者当文件大小超过给定大小时,logrotate 都会运行。daily
只要将 放在那里size=2
,而不是size=+2
,它就可以工作。
尺寸 尺寸
当日志文件的大小超过 size 字节时,它们将被轮换。如果 size 后面跟着 M,则大小将以兆字节为单位。如果使用 k,则大小将以千字节为单位。因此,size 100、size 100k 和 size 100M 都是有效的。