linux - grep 本地好还是远程好?

标签 linux perl file ssh grep

我经常登录一系列服务器来查找日志中的某些内容。
我想通过脚本自动执行此操作以使其更容易。
所以我的问题是哪种方法最有效、最明智?
正在做

my @data = `ssh host grep pattern logfile`    

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

最佳答案

这取决于

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

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

要进一步减少旅行数据,您甚至可以执行类似的操作

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

对于您的目的来说,这应该基本上等同于

my @data = `ssh -C host 'grep pattern logfile'`

虽然我从来没有尝试过这个。

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

关于linux - grep 本地好还是远程好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22566770/

相关文章:

python - 如何使用 Python 按大小搜索文件

c# - 最快读取二进制文件读写

java - .dat 文件上出现 FileNotFoundException

斯卡拉 : bug with getLines?

linux - 如何在控制台中显示 printk() 消息?

linux - 如何使用 procps-3.2.8 列出所有正在运行的进程?

linux - 为什么某些 linux shell 的日期时间是 Tue Feb 24 13 :03:40 SGT 2009 why some is Tuesday, February 24, 2009 1:03:41 PM SGT

apache-flex - Flex/AIR + 催化剂 : What's the best way to get them to talk to each other?

perl - Moose属性如何“扮演”鼠标角色?

regex - 我必须如何声明 Perl 拆分的正则表达式?