在 CentOS 6.x 上,我创建了一个名为的简单服务logtraffic
,该服务在启动时会将命令的输出附加tcpdump
到日志文件中/var/log/logtraffic/logtraffic.log
。
我想针对该日志实现以下目标:
每天午夜轮换该日志
保留最新的 7 条日志并删除较旧的日志
为此,我做了以下工作:
- 从 /etc/anacrontab 中注释掉以下行
1 5 cron.daily nice run-parts /etc/cron.daily
添加了以下 cron 作业:
@midnight /etc/cron.daily/logrotate
/etc/logrotate.d/logtraffic
创建了内容如下的文件:
/var/log/logtraffic/*log {
daily
rotate 7
create
dateext
missingok
notifempty
sharedscripts
postrotate
/sbin/service logtraffic restart > /dev/null 2>/dev/null || true
endscript
}
看起来日志在午夜被正确截断,因为 logtraffic.log 中显示的时间戳证明了这一点。
问题是该文件夹中没有其他旧日志文件。我原本以为会有带有 YYYYMMDD 后缀的旧日志,但实际上没有。
我究竟做错了什么?
答案1
/etc/logrotate.d/logtraffic
我终于设法解决了这个问题。我用以下代码更改了内容:
/var/log/logtraffic/*log {
daily
rotate 7
create
dateext
missingok
notifempty
sharedscripts
prerotate
/sbin/service logtraffic stop > /dev/null 2>/dev/null || true
endscript
postrotate
/sbin/service logtraffic start > /dev/null 2>/dev/null || true
endscript
}
我仍然不明白为什么它不能与我之前的设置一起工作,但至少现在已经修复了。