grep本地或远程更好吗?

时间:2014-03-21 18:28:56

标签: linux perl file ssh grep

我经常登录一系列服务器,以便在日志中查找内容 我想通过脚本自动化这个,以使它更容易 所以我的问题是哪种方法最有效和最合理? 做

my @data = `ssh host grep pattern logfile`    

或者在本地下载文件(scp文件)并在本地执行grep?

3 个答案:

答案 0 :(得分:5)

这取决于

  • grep过滤器
  • 的日志行百分比
  • 可用的CPU(远程和本地)
  • scp
  • 的可用带宽
  • 可用的文件系统大小
  • 您是否可能需要原始日志文件用于其他目的

如果您以后不需要该文件,并且如果远程grep不是问题,那么在通过网络发送数据之前减少数据(这通常是瓶颈)是最有益的当时。

为了进一步减少旅行数据,您甚至可以执行类似

的操作
my @data = `ssh host 'grep pattern logfile | gzip' | gunzip`

对于您的目的,这应该与

大致相同
my @data = `ssh -C host 'grep pattern logfile'`

虽然我从未尝试过这个。

顺便说一句,你说你使用了egrep,这很好,但我从不厌倦提醒人们grep将点解释为通配符,因此fgrep(或{{1}应该用于固定字符串。

答案 1 :(得分:0)

grep赢了"自动" :它必须由某个地方的计算机执行。

显而易见的答案是,最好远程执行此操作,因为这种方式(可能)必须通过网络返回较少的数据行。也就是说,除非远程机器非常慢,否则网络不需要的数据要比过滤它更快。

为什么不对它进行基准测试以比较这两个选项?并且不要开始优化,直到你的东西运转良好。

答案 2 :(得分:0)

如果您使用java,则只需使用grep4j库,否则如果您想要图形化的东西,可以使用SSearcH Everywhere