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