我需要检查日志中特定ID的计数,在Unix服务器中最近24小时。现在,我正在使用以下命令
find -type f -newermt "aug 27, 2018 02:30" ! -newermt "aug 28, 2018 02:30" ! -exec grep -r 'commandType\": \"PATTERN' {} \;|wc -l
由于日志中的数据非常庞大,因此上述命令需要1个小时以上的时间才能提供输出。无论如何,有没有优化上面的命令以快速获得真实输出的信息?
答案 0 :(得分:1)
好吧,第一要做的是找出时间在哪里度过。是find
还是grep
。您可以通过运行以下命令来确定find
的费用:
time find -type f -newermt "aug 27, 2018 02:30" ! -newermt "aug 28, 2018 02:30" -exec true \;
然后,如果grep
一直占用,则有两种可能:
files
修补xargs
,以在更大的文件组上运行单个grep
。通常,只有在有大量 个文件的情况下(可能不是),这才有帮助。grep -F
而不是grep
,因为它可能针对该用例进行了优化。哦,顺便说一句,-r
可能无关紧要,因为您无论如何都只在处理文件-无需递归。