SUSE Enterprise Server 中的 logrotate

SUSE Enterprise Server 中的 logrotate

我无法使用这个虚拟配置文件(我将它放在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 都是有效的。

相关内容