在Ubuntu 12.10上,将以下条目添加到'/etc/logrotate.d'路径:
# cat /etc/logrotate.d/tsdb
/home/logs/*dat {
daily
rotate 30
compress
missingok
notifempty
create 0664 nagios nagios
}
以下是'/etc/cron.daily/logrotate'文件的样子:
# cat /etc/cron.daily/logrotate
#!/bin/sh
# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
[ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
我希望日志能够旋转,但我看不到它们正在旋转。我在这里做错了什么呢?
状态文件确实显示logrotate在有问题的文件上运行,但我没有看到任何文件 旋转日志:
# cat /var/lib/logrotate/status
logrotate state -- version 2
"/home/logs/service-perfdata.dat" 2013-11-26
"/home/logs/host-perfdata.dat" 2013-11-26
此外,这里是'/etc/logrotate.conf'文件的样子:
# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here
以下是logrotate手动运行的输出:
# /usr/sbin/logrotate -vd /etc/logrotate.conf
rotating pattern: /home/logs/*dat after 1 days (30 rotations)
empty log files are not rotated, old logs are removed
considering log /home/logs/host-perfdata.dat
log does not need rotating
considering log /home/logs/service-perfdata.dat
log does not need rotating
答案 0 :(得分:1)
logrotate
最初处理日志文件的方式不直观:
在您的情况下,您看到它检查了相关文件,并在第一次运行时为每个文件写了一个状态行。任何后续运行都将使用该行上的日期,并将其与日志文件日期进行比较,以查看它是否应该旋转。我怀疑你的档案是11月26日的日期,并且它在11月26日检查过,所以他们不需要旋转。无论是回溯日志文件,还是回溯状态文件中的条目,都可以让它为您旋转文件。
如果状态文件中没有条目,即使文件需要旋转,它也不会在第一次运行时旋转它们,除非您使用-f
(强制)标志