我在Ubuntu的logrotate文件每天运行。 我想确保它的旋转日志文件在每个小时得到没有完整的磁盘错误了。 所以我的logrotate文件是在cron.daily文件夹中,简单地移动到cron.hourly就足够了吗?
我也想保持我的最大日志文件大小在5MB,但林不知道该怎么改变在logrotate.cnf。
logrotate.cnf内容(不含换行符):
每周轮换4次创buildinclude /etc/logrotate.d
- unix logrotate指定块大小
- 如果logrotate的行为有*,并且在一个path中有一个明确的文件名在日志中旋转?
- 日志旋转的好处
- 保持Linux日志文件的最佳方式
- 如何在logrotateconfiguration文件中指定通配符设置的exception?
/ var / log / wtmp {missingok每月创build0664根utmp旋转1}
/ var / log / btmp {missingok每月创build0660根utmp旋转1}
我知道我必须使用5M大小 ,但我应该在哪里写? 我是否认为第一行是所有日志文件,第二行和第三行是只有wtmp和btmp? 所以如果我的逻辑是正确的,那么我必须在所有行中写入5M的大小 ,对吗?
为了使其具有任何效果,cron脚本必须至less按照您想要旋转文件的频率运行。 即使您目前每天运行一次脚本(来自cron.daily),它只会每周更改一次文件(logrotate脚本中的weekly关键字设置为默认值,在wtmp的情况下会将其覆盖为每月一次) BTMP)。
我最近的Linux机器上的logrotate版本只能达到每天的持续时间(尽pipe设置大小限制会强制文件被更频繁地旋转)。 话虽如此,对于大多数服务器来说,日志轮换是破坏性的; 如果您的目标是节省空间,那么保留较less的历史文件并对其进行压缩可能更为合适:
daily rotate 2 compress size 5M create include /etc/logrotate.d /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 }
(请注意,如果第一行的更改被其他地方覆盖,则第一行的更改将不起作用。)
一个非常优雅的方式为我工作 – 根据文件大小每小时运行一次logrotate,执行以下操作:
1)将Logrotate脚本从cron.daily文件夹复制到cron.hourly文件夹中
cp /etc/cron.daily/logrotate /etc/cron.hourly/
2)更新/etc/cron.hourly/logrotate文件; 注释并replace最后一行如下
#/usr/sbin/logrotate /etc/logrotate.conf /usr/sbin/logrotate /etc/logrotate.d/logstash
3)更新相关的/ etc / crontab项如下(如果需要)
#17 * * * * root cd / && run-parts --report /etc/cron.hourly 59 * * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.hourly )
4)最后在logrotate conf文件中写入以下逻辑(根据需要更新文件夹path和大小)
cat /etc/logrotate.d/logstash /var/log/logstash/*.log /var/log/logstash/*.err { hourly size 10M rotate 4 copytruncate compress #delaycompress missingok notifempty }