logrotate会删除.gz文件吗?也就是说,使用*路径进行logrotate是否会旋转现有的.gz文件?

时间:2017-07-10 20:03:50

标签: linux bash tomcat logrotate glob

//,这个问题有点含糊不清。

以下是该方案:

我的日志包含以下三个扩展名,但我当前的规则仅适用于* .log文件:

.1
.log
.txt

另外,因为Tomcat正在旋转日志,所以我有以下内容:

.gz

我想要旋转所有这些文件,但我不想最终使用任何.gz.gz文件。我该怎么做?

Tomcat的Logrotate规则

目前,我对Tomcat日志有以下规则:

% sudo cat /etc/logrotate.d/tomcat
# THIS FILE IS AUTOMATICALLY DISTRIBUTED BY PUPPET.  ANY CHANGES WILL BE
# OVERWRITTEN.

/opt/apache-tomcat_1/logs/*.log {
  compress
  daily
  delaycompress
  maxage 60
  maxsize 500M
  minsize 1k
  rotate 20
  size 100k
}

要尝试解决此问题,我可以将/opt/apache-tomcat_1/logs/*.log路径更改为/opt/apache-tomcat_1/logs/*,但我想知道是否会以相同方式重新压缩或处理.gz文件作为.log.txt文件。

logrotate是否有某种方法可以让现有的.gz文件单独存在?

其他档案

/etc/cron.daily/logrotate上次获得更新的时间大约是12天前:

% sudo ls -lanh /etc/cron.daily/logrotate
-r-xr-xr-x 1 0 0 313 Jun 29 21:48 /etc/cron.daily/logrotate

其内容如下:

#!/bin/sh
# THIS FILE IS AUTOMATICALLY DISTRIBUTED BY PUPPET.  ANY CHANGES WILL BE
# OVERWRITTEN.

OUTPUT=$(/usr/sbin/logrotate /etc/logrotate.conf 2>&1)
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
    echo "${OUTPUT}"
fi
exit $EXITVALUE

并且,如果它是相关的:

% cat /etc/logrotate.conf
# THIS FILE IS AUTOMATICALLY DISTRIBUTED BY PUPPET.
# ANY CHANGES WILL BE OVERWRITTEN.

create
weekly
rotate 4

# configurable file rotations
include /etc/logrotate.d

我为此做了quick search onlinefound some results。 askubuntu.com的回答最接近,但我仍然不确定logrotate是否会“轮换”由其他服务(如Tomcat)创建的.gz文件。

当在logrotate路径中使用* globbing时,这些结果中的任何内容都没有回答关于由另一个服务(例如Tomcat)创建的预先存在的.gz文件的特定问题。

现在我只是用多个路径/规则来解决这个问题:https://v.gd/yNfAAu

但我很好奇。什么脚本行为智能地使logrotate忽略现有的.gz文件,或以不同方式处理它们,同时仍然删除那些足够大或大的文件? Logrotate有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

来自" man logrotate"

您可以使用变量" tabooext"指定您希望logrotate忽略的文件扩展名。