【发布时间】:2012-05-31 15:42:48
【问题描述】:
我已经为我的 Web 应用程序设置了一个自动部署脚本(在 shell 脚本中)。
它使用 java、tomcat、maven 和 postgres 数据库。
部署脚本会这样做:
- 从源代码库构建可部署的应用程序
- 停止 tomcat
- 应用数据库迁移补丁
- 在tomcat中部署war文件
- 启动 tomcat(通过调用 $TOMCAT_HOME/bin/startup.sh)
- 退出并显示成功消息
一切正常,而且非常整洁 - 但需要一点改进。 您会看到,即使它退出并显示成功消息,有时部署也不会成功,因为 Web 应用程序没有正确启动。
我想重构步骤 5 和 6,以便在启动 tomcat 服务器后,部署脚本将在 catalina.out 文件中“tail -f”,查找“服务器启动成功”消息或异常堆栈跟踪。
至此为止的 tail -f 输出应该是部署脚本输出的一部分,步骤 6 将相应地“退出 0”或“退出 1”。
我知道这应该是可能的,如果不是在 shell 脚本中,也许是 python。 问题是我是一名 Java 专家——所谓专家,我的意思是我在其他所有方面都很糟糕 :-)
请帮忙? :-)
【问题讨论】:
-
看Python的subprocess.Popen
-
据我所知,您可能想
tail -flocalhost..log,有些异常会出现在那里而不是 catalina.out。我的环境确实如此,我不知道为什么。 -
tail -f基本上在文件上运行一个无限循环,脚本应该只是exec成功还是你的意思是tail并成功退出? -
虽然 Popen 可用于扫描
tail -f的输出,但使用 python 的文件访问功能可能更容易,例如这里:tail-f-in-python -
谢谢snies。解决了它(stackoverflow.com/questions/4417962/…)