我在 /var/opt/log_loc1、/var/opt/log_loc2、/var/opt/log_loc3 中有许多来自不同 cron 作业的生成日志。有没有办法安排一个 cron 作业,用所有包含错误消息的日志填充新的日志文件,而不是查看每个日志?
基本上我想用所有日志名称和其中的错误填充一个新的日志文件,名称为“all_logs_%Y_%m_%d”。每天,我都会有一个新的 all_logs_%Y_%m_%d
示例:这是 /var/opt/log_loc1 中我的日志文件列表
- InsertSales_2019_08_19.log
- PurgeHistory_2019_08_19.log
- 导入11_2019_08_19.log
- ImportSales_2019_08_19.log
- 导入22_2019_08_20.log
- 导入33_2019_08_20.log
- InsertSales_2019_08_20.log
- PurgeHistory_2019_08_20.log
- 导入11_2019_08_20.log
- ImportSales_2019_08_20.log
- 导入22_2019_08_21.log
- 导入33_2019_08_21.log
- InsertSales_2019_08_21.log
- PurgeHistory_2019_08_21.log
*如果我的问题不完整,我深表歉意
答案1
怎么样find
?,我能想到的最简单的方法是使用它,也许它有点粗糙,但它必须完成工作
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
我不清楚你是否只想过滤所有日志文件(来自所有日子)或只是从今天开始,如果你需要过滤日期,你可以使用-mtime
选项或只是使用仅过滤选项的find
“技巧” ,-name
例如,昨天的日志
find /var/opt/ -type f -name "*_`date --date yesterday '+%Y_%m_%d'`.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} >> total.log \;
不确定这是否可以帮助您...其他不清楚的是,日志文件具有什么样的语法?因为find
不能按字母或数字顺序查找,所以你会得到一个混乱的文件。通常(并且必须是教条),日志以 %Y%m%d_%H:%M 或类似的内容开头,如果是这种情况,您可以以类似的方式sort
输出find
find /var/opt/ -type f -name "*.log" -exec grep -iH 'err\|warn\|fail\|whatever' {} \; sort -no total.log
我尝试了这个方法/var/log
,看起来它可以完成工作,但正如我所说,这是一个粗糙的方法。
希望这可以帮到你。
您可以在页面中找到有关我与find
、sort
和一起使用的选项的更多信息。grep
man