我有以下jenkins后构buildshell脚本:
ssh user@my_server <<EOF service my_service stop service my_service start tail -f /opt/services/my_service/logs/current exit EOF
该脚本在远程主机(my_server)上重新启动my_service。
我的问题是:命令服务my_service启动只是请求运行一个my_service的服务 ,即服务my_service开始执行后立即返回。
但服务my_service开始运行一个SpringBoot Java Web应用程序,它将所有日志信息写入到… / logs /当前日志文件中。 为了捕获这个日志信息,我添加了命令tail -f / opt / services / my_service / logs / current,但是在这种情况下,Jenkins的构build永远不会结束)),例如tail -f命令永不停止。
有没有办法执行我的后构build脚本(只能启动我的Web应用程序在远程服务器上),并抓住… /日志/当前日志文件在2分钟内,或直到这个日志有“Web应用程序MyApplication有已经开始“。
我想在Jenkins的控制台输出中看到… / logs /当前日志文件的内容,并在2分钟后杀死tail -f
tail -f
将不会结束,直到它被打断,所以你的脚本将永远不会完成运行。
你可以做的是在你的日志中使用grep -q
,当它发现它的模式时,它将以0退出状态退出。
grep -q 'Web app MyApplication has been Started' <(tail -f /opt/services/my_service/logs/current)