我用Ubuntu 14.04 我尝试每次运行 logrotate10分钟并删除所有大于的日志文件2MB我尝试了很多解决方案,但都不起作用,我的 logrotate 每天只运行 1 次,我尝试将 logrotate 从 cron.daily 移到 cron.hourly 但没有起作用,我尝试其他解决方案并执行以下操作:
创建文件logrotate:
*/10 * * * * root /usr/sbin/logrotate /etc/logrotate.conf
并添加:
/etc/cron.d
这是我的/etc/logrotate.d/apache2:
/var/log/apache2/*.log /var/log/apache2/domains/*log {
weekly
missingok
rotate 10
maxsize 2M
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null || true
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
答案1
如果大小是轮换日志文件的唯一标准,则您应该weekly
从配置中删除关键字。
weekly
如果当前工作日早于上次轮换的工作日或距离上次轮换已超过一周,则将轮换日志文件。这通常与在每周第一天轮换日志相同,但如果 logrotate 不是每晚运行,效果会更好。
但是,为了避免你的 Apache Web 服务器每 10 分钟重启一次,可以考虑使用rotatelogs
可以将其配置为仅保留少量有限大小的日志:
CustomLog "|bin/rotatelogs -n 10 /var/log/access_log 2M" common
答案2
Logrotate 应该每天运行一次。这就是它位于 /etc/cron.daily/logrotate 的原因。
如果您想要更频繁地运行 logrotate,则需要删除 /etc/cron.daily/logrotate 并在 crontab 中手动添加 logrotate 记录。