gpt4 book ai didi

java - 发现异常或服务器正在运行时自动停止 "tail -f catalina.out"

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:09 29 4
gpt4 key购买 nike

我已经为我的网络应用程序设置了一个自动部署脚本(在 shell 脚本中)。

它使用 java、tomcat、maven 和 postgres 数据库。

部署脚本这样做:

  1. 从源存储库构建可部署的应用程序
  2. 停止tomcat
  3. 应用数据库迁移补丁
  4. 在 tomcat 中部署 war 文件
  5. 启动 tomcat(通过调用 $TOMCAT_HOME/bin/startup.sh)
  6. 退出并显示成功消息

一切正常,而且非常整洁 - 但需要一点改进。您会看到,即使它退出并显示成功消息,有时部署也不会成功,因为 Web 应用程序未正确启动。

我想重构第 5 步和第 6 步,以便在启动 tomcat 服务器后,部署脚本将在 catalina.out 文件中“tail -f”,查找“服务器成功启动”消息或异常堆栈跟踪。

到目前为止的 tail -f 输出应该是部署脚本输出的一部分,因此第 6 步将相应地“exit 0”或“exit 1”。

我知道这应该是可能的,如果不是在 shell 脚本中,也许是 python。问题是我是一名 Java 专家——我所说的专家是指我对其他一切都很糟糕:-)

请帮忙? :-)

最佳答案

也许是这样的?

tmp=$(mktemp -t catalina.XXXXXXX) || exit 136
trap 'rm "$tmp"' 0
trap 'exit 255' 2 15
tail -n 200 catalina.out >"$tmp"
if grep -q error "$tmp"; then
cat "$tmp"
exit 1
fi
exit 0

另一方面,如果 startup.sh 编码得当,您可以

if startup.sh; then
tail -f catalina.out
else
exit $?
fi

可以缩短为

startup.sh || exit $?
tail -f catalina.out

关于java - 发现异常或服务器正在运行时自动停止 "tail -f catalina.out",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747953/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com