从我系统上的时间戳来看,当logrotate由cron运行时,logrotate会每天进行日志轮换。但是,如果我早于运行它,则不会旋转文件。logrotate如何知道是否应该旋转它们,保留历史记录或使用时间戳记?
从我系统上的时间戳来看,当logrotate由cron运行时,logrotate会每天进行日志轮换。但是,如果我早于运行它,则不会旋转文件。logrotate如何知道是否应该旋转它们,保留历史记录或使用时间戳记?
Answers:
我相信这是状态文件的内容,我的情况是这样/var/lib/logrotate.status
。每个文件都有一行,这是文件的最后旋转日期。如果运行logrotate的日期是给定文件的到期日期,则考虑到当前日期和文件中日期之间的天数(每天1天,每周7天,依此类推),文件将被轮换。
logrotate似乎并不关心它在一天中的什么时间运行;即使它通常在2355上运行,但如果您改为在0130上运行,它仍会轮换每天标记的文件,最后一次是昨天完成的文件;但是这样做会把今天的日期放到状态文件中(与所有轮换文件相对),因此第二次运行在2355上将无济于事。
从logrotate手册页:
通常,logrotate作为日常cron作业运行。除非该日志的标准基于日志的大小并且每天要运行logrotate多次,或者除非使用了-f或-force选项,否则它一天之内不会修改日志多次。
/var/lib/logrotate/status
在以下情况下旋转:当前日期>日期(因为文件在我的情况下)。