我想在 /var/log/auth.log 中保留超过 5 个默认日志文件。我需要进行哪些更改才能保留其中的 x 个?
答案1
这是由 完成的logrotate
,它作为一项日常cron
工作,检查其配置文件中需要轮换、压缩、删除的日志文件,并采取必要的措施。
对于/var/log/auth.log
,它实际上是一个rsyslog
托管文件,因为rsyslog
它将所有身份验证信息(auth
、authpriv
设施)都转储到其中(conf 文件:/etc/rsyslog.d/50-default.conf
), 的相关配置文件logrotate
是/etc/logrotate.d/rsyslog
。
在我的 14.04 上包含:
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
所以/var/log/auth.log
正在通过此配置进行旋转。
要修改行为以保留所需数量的轮换文件,您可以在文件名声明后面的部分将rotate
参数更改为所需的值(任何正整数,0
将立即删除旧文件){ ... }
,但这将改变所有提及的文件的行为,这可能不是所需的行为。
相反,/var/log/auth.log
从那里删除,并在末尾添加以下内容,为此创建一个单独的条目:
/var/log/auth.log
{
rotate 10
weekly
missingok
notifempty
compress
delaycompress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
上述代码将使用-ion 旋转/var/log/auth.log
,,如果它为空则不旋转(),并且将保留旋转的副本,而将删除较旧的副本。weekly
compress
notifempty
10
更改这些以满足您的需要,并阅读man 5 logrotate.conf
。
答案2
轮换时间表定义在/etc/logrotate.d/rsyslog
如果我们检查文件,我们可以看到 auth.log 是默认配置为轮换 4 次、每周计划的文件之一。请注意,相反,syslog 设置为轮换 7 次、每日计划。您可以遵循 syslog 的格式并创建一个遵循相同格式的条目,这将为您提供所需的结果,即轮换 X 和所需的计划,如每日、每周或其他。注意 postrotate 指令,因为它指定了整个日志轮换完成后发生的操作。
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
reload rsyslog >/dev/null 2>&1 || true
endscript
}
来源:
man logrotate