新手问题在这里。
我正在尝试管理几台 Linux 机器,但尽管它们看起来很相似,但不知怎的,它们却彼此如此不同。例如,其中一台服务器上的 mysql 日志文件可以存储在 /var/log/mysql/backups/thelog 中,另一台服务器上的 mysql 日志文件可以存储在 /var/log/ 中。现在想象一下,服务器越来越多。好消息是,例如,在 99% 的服务器上,日志文件扩展名为 .log 因此,每次我花费大量时间搜索仅存储日志的位置。 dmesg 不适用于所有这些服务器,而且它也不是很有帮助。那么你能帮助我并告诉我某种命令/脚本吗?例如,我可以用它在所有 .log 文件中搜索并 grep 一些可能有用的东西?提前非常感谢!
答案1
为了grep
:
用于
-r
查看每个目录下-R, -r, --recursive
递归读取每个目录下的所有文件;这相当于 -d 递归选项。使用
--include
选项来限制文件--include=GLOB
仅搜索基本名称与 GLOB 匹配的文件(使用 --exclude 中所述的通配符匹配)。
.log
要在一台计算机上的任何子目录中的文件中搜索“文本” /var
,命令将类似于:
grep -r --include \*.log 'text' /var
您必须通过 ssh 连接到每个服务器,然后运行grep
.命令看起来像这样:
for server in $(cat servers.txt); do ssh "$server" "grep-command"> "output-$server"; done
文档引用自这里。
答案2
find
自己可以做很多事情:
find . -name "*.log" -exec grep -l "pattern" {} +
将显示当前目录中或当前目录下包含该模式的日志文件
答案3
您需要找到该文件并 grep 内容:
for f in $(find -name "*.log"); do grep -n "PATTERN" $f; done