grep失效问题排查
问题描述
使用grep
过滤终端log输出获取有效信息,三方log库更新后方法失效,所有信息全量打印无法过滤。
解决思路
考虑新版本log将终端回显定向到stderr,而stderr为无buffer设计,内容直接输出终端,
因此程序打印不经过stdout的内容无法通过grep
过滤。
具体实施
将程序的stderr重定向到stdin即可正常grep
生效
./run_app.sh 2>&1 | grep "ERROR"
命令详解
在上述2>&1
命令中:
1
代表stdout2
代表stderr>
代表重定向,&
防止shell将1
理解为file>&
连用代表并入(merge)