【发布时间】:2015-12-01 01:00:41
【问题描述】:
我的一个项目的 Makefile 为功能测试步骤在无头浏览器上运行了一堆测试。大多数测试是针对前端代码的,但我也会检查后端是否有任何错误/警告。
目前,我们正在清理 Web 服务器日志,运行所有(非常慢的)测试,然后对服务器日志进行 grepping 以查找任何错误或警告。
我想知道是否有任何方法可以让侦听器从后台开始解析日志(例如tail -f | grep),如果在测试运行期间检测到任何错误/警告,则终止 make 目标。
到目前为止我得到的是
- 在后台启动长寿命的 grep 并存储 PID。
- 运行测试。
- 检查长寿命 grep 的输出
- 杀死 PID。
- 如果出现任何错误,则失败。
这只给我带来了好处,现在我每次都不会丢失我的开发盒上的服务器日志,因为我不必每次都清理它。但是我仍然需要等待很长时间(几分钟)才能等待第一次可能发生的故障。
有什么解决办法吗?
【问题讨论】:
-
使用比
grep更灵活的东西?像awk或 insert-favorite-scripting-language 那样可以在匹配发生时运行任意命令? -
@EtanReisner 应该没问题,我真的不关心 grep 与否。但是仍然不清楚如何从 awk 或 make 将其置于后台后的任何内容捕获日志消息。
-
嗯? awk 可以在处理输入时直接执行命令,并且可以在需要时退出。
-
@EtanReisner Make 依赖于它开始决定是否失败的命令的返回值。如果我将一个命令放在后台运行其他命令,我将无法返回值。并且能够启动其他命令的后台程序对我没有帮助。或者我没有看到它会如何......
-
@gcb,我想你很清楚该怎么做。技术解决方案如您在第 3 段中所述。你真正的问题是你需要更多的shell脚本经验。或者更好 - Python/Perl/etc 脚本。
标签: linux bash unix testing makefile