grep本地或远程更好吗?

Jim*_*Jim 2 linux ssh perl grep file

我经常登录一系列服务器来查看日志中的内容.
我想通过脚本自动执行此操作以使其更容易.
所以我的问题是哪种方法最有效和最合理?

my @data = `ssh host grep pattern logfile`    
Run Code Online (Sandbox Code Playgroud)

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

Wal*_*oss 5

这取决于

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

如果您以后不需要该文件,并且如果远程grep操作不是问题,那么在通过网络发送数据之前减少数据(这通常是瓶颈)在大多数情况下都是有益的.

为了进一步减少旅行数据,您甚至可以做类似的事情

my @data = `ssh host 'grep pattern logfile | gzip' | gunzip`
Run Code Online (Sandbox Code Playgroud)

出于您的目的,这应该基本上等同于

my @data = `ssh -C host 'grep pattern logfile'`
Run Code Online (Sandbox Code Playgroud)

虽然我从未尝试过这个.

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