logrotate 会删除 .gz 文件吗?也就是说,带 * 路径的 logrotate 是否会旋转现有的 .gz 文件?
Does logrotate remove .gz files? That is, does logrotate with a * path rotate an existing .gz file?
// , 这个问题有点模棱两可
场景如下:
我有以下三个扩展名的日志,但我当前的规则仅适用于 *.log 文件:
.1
.log
.txt
此外,因为 Tomcat 正在轮换日志,所以我有以下内容:
.gz
我想轮换所有这些文件,但我不想以任何 .gz.gz 文件结束。我该怎么做?
Tomcat
的对数轮换规则
目前,我对 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 online for this, and found some results。 askubuntu.com 答案最接近,但我仍然不确定 logrotate
是否会“旋转”由其他服务创建的 .gz
文件,例如 Tomcat.
当在 logrotate 路径中使用 *
globbing 时,这些结果中没有任何内容可以回答有关由其他服务(例如 Tomcat)创建的预先存在的 .gz 文件的特定问题。
现在我只是用多个paths/rules来解决这个问题:https://v.gd/yNfAAu
但我很好奇。什么脚本行为智能地使 logrotate
忽略现有的 .gz
文件,或者以不同的方式处理它们,同时仍然删除足够旧或足够大的文件? Logrotate 是否已经有办法做到这一点?
来自"man logrotate"
您可以使用变量 "tabooext" 来指定您希望 logrotate 忽略的文件扩展名。
// , 这个问题有点模棱两可
场景如下:
我有以下三个扩展名的日志,但我当前的规则仅适用于 *.log 文件:
.1
.log
.txt
此外,因为 Tomcat 正在轮换日志,所以我有以下内容:
.gz
我想轮换所有这些文件,但我不想以任何 .gz.gz 文件结束。我该怎么做?
Tomcat
的对数轮换规则目前,我对 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 online for this, and found some results。 askubuntu.com 答案最接近,但我仍然不确定 logrotate
是否会“旋转”由其他服务创建的 .gz
文件,例如 Tomcat.
当在 logrotate 路径中使用 *
globbing 时,这些结果中没有任何内容可以回答有关由其他服务(例如 Tomcat)创建的预先存在的 .gz 文件的特定问题。
现在我只是用多个paths/rules来解决这个问题:https://v.gd/yNfAAu
但我很好奇。什么脚本行为智能地使 logrotate
忽略现有的 .gz
文件,或者以不同的方式处理它们,同时仍然删除足够旧或足够大的文件? Logrotate 是否已经有办法做到这一点?
来自"man logrotate"
您可以使用变量 "tabooext" 来指定您希望 logrotate 忽略的文件扩展名。