logrotate 在旋转过程中跳过了一个数字...然后恢复了?

logrotate 在旋转过程中跳过了一个数字...然后恢复了?

我正在运行使用 Yocto 衍生的 Linux 发行版的嵌入式系统。内核版本:4.1.15-2.0.0。

我们需要管理日志,并使用 logrotate 进行管理。要求我们有 72 小时的日志,每小时一个文件(此处修改为每 5 分钟轮换一次,以进行测试)。这样,客户就可以卸载规定操作时间的特定日志。他们希望它坚如磐石,因为访问操作信息的唯一方法是通过日志,而这些日志文件是通过我们提供的应用程序上传的。

我这里有 logrotate.conf 文件:

/var/log/messages {
    create 700 root root
    rotate 72
    maxage 4
    ifempty
    prerotate
        /bin/cp /var/volatile/log/messages /home/root/logs/
    endscript
    compress
}

我通过 contab 条目运行 logrotate 系统,该条目每小时执行一次 conjob。以下是 crontab 中的条目:

*/5 * * * * /etc/logrotateScript.sh

(注意:为了测试目的,我已将 cron 任务改为每 5 分钟运行一次)

当然,脚本文件的内容如下:

#!/bin/sh
/usr/sbin/logrotate -f /etc/logrotate.conf

因此,这有效......呃嗯大部分有效!!

我有时会得到序列中缺少的文件。我的意思是,例如:

root@imx6qrsb6410a2:~# ls -lh /var/log/
-rw-r--r--    1 root     root           0 Jan  9 17:31 boot
-rw-r--r--    1 root     root       25.7K Jan  9 17:31 dmesg
-rw-r--r--    1 root     root         292 Jan  9 17:31 lastlog
-rwx------    1 root     root       32.8M Jan  9 18:49 messages
-rwx------    1 root     root       34.9M Jan  9 18:45 messages.0
-rw-r--r--    1 root     root         314 Jan  9 18:45 messages.1.gz
-rw-r--r--    1 root     root         313 Jan  9 18:00 messages.10.gz
-rw-r--r--    1 root     root         314 Jan  9 17:55 messages.11.gz
-rw-r--r--    1 root     root         302 Jan  9 17:50 messages.12.gz
-rw-r--r--    1 root     root         379 Jan  9 17:45 messages.13.gz
-rw-r--r--    1 root     root         338 Jan  9 17:40 messages.14.gz
-rw-r--r--    1 root     root         406 Jan  9 17:35 messages.15.gz
-rw-r--r--    1 root     root         313 Jan  9 18:40 messages.2.gz
-rw-r--r--    1 root     root         312 Jan  9 18:30 messages.4.gz
-rw-r--r--    1 root     root         314 Jan  9 18:25 messages.5.gz
-rw-r--r--    1 root     root         357 Jan  9 18:20 messages.6.gz
-rw-r--r--    1 root     root         307 Jan  9 18:15 messages.7.gz
-rw-r--r--    1 root     root         312 Jan  9 18:10 messages.8.gz
-rw-r--r--    1 root     root         311 Jan  9 18:05 messages.9.gz

您可以看到 messages.3.gz 文件丢失。此外,时间间隔显示 messages.3.gz 应该在 18;45 时创建,因此有 10 分钟的时间间隔内 logrotate 没有执行其操作。

我查看了丢失文件两侧的 2 个文件的内容,数据确实丢失了。

什么情况下会导致 logrotate 无法完成其任务?我还注意到这种情况只发生在 messages.3.gz 上,这很奇怪。没有其他应用程序接触 messages.#.gz 文件,所有应用程序都只写入消息。

如有任何帮助或意见,我们将不胜感激。

干杯!!

相关内容