【发布时间】:2017-12-14 16:42:23
【问题描述】:
// ,这个问题有点模棱两可。
这是场景:
我有以下三个扩展名的日志,但我目前的规则仅适用于 *.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/*,但我想知道这是否会以与.log 相同的方式重新压缩或处理.gz 文件和.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 和found some results。 askubuntu.com 的答案最接近,但我仍然不确定 logrotate 是否会“旋转”由另一个服务(如 Tomcat)创建的 .gz 文件。
当在 logrotate 路径中使用 * globbing 时,这些结果中没有任何内容回答有关由另一个服务(例如 Tomcat)创建的预先存在的 .gz 文件的具体问题。
现在我只是用多个路径/规则来解决这个问题:https://v.gd/yNfAAu
但我很好奇。什么脚本行为可以智能地使logrotate 忽略现有的.gz 文件,或者以不同的方式处理它们,同时仍然删除那些足够旧或足够大的文件? Logrotate 是否已经有办法做到这一点?
【问题讨论】:
-
// ,现在阅读这个,看起来它可能更适合 serverfault.com。根据需要随意迁移,或提出修改建议。
-
也可以发布到 askubuntu.com
-
// 是怎么回事?
标签: linux bash tomcat logrotate glob