我需要处理远程目录中的日志文件并解析其内容。此任务可分为以下几个部分:
ssh find
以确定要处理的文件zgrep
步骤 1 和 3 非常快,所以我希望改进第2步。
文件存储为gz或纯文本,处理它们的顺序非常重要。需要首先处理较新的日志,以避免与旧日志出现差异。
为了获取和过滤日志行,我尝试了以下方法:
scp
命令,并且并行线程检查temp文件夹以完成下载,直到scp
完成。如果文件已下载,请运行zgrep
,处理并删除该文件。ssh remote zgrep "regex" file1 file2 file3
,抓取结果并进行处理。方法2是一个更易阅读和更优雅的解决方案,但它也慢得多。使用方法1我可以在大约1:30分钟内下载并解析280个文件。使用方法2,将需要接近5:00分钟。下载过程方法的一个主要问题是在脚本运行时可以更改目录,导致代码中需要进行多次检查。
从python运行shell命令我目前正在使用subprocess.check_output
以及multiprocessing
和threading
模块。
你能想到这种算法可以改进的方法吗?