gpt4 book ai didi

java - 如何获取特定日志文件并在 jenkins 控制台输出中显示其内容

转载 作者:IT王子 更新时间:2023-10-29 00:37:43 26 4
gpt4 key购买 nike

我有以下 Jenkins 构建后 shell 脚本:

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。

我的问题是:命令 service my_service start 只是向 RUNIT 发出运行 my_service 的请求,即 service my_service start 在执行后立即返回。

但是 service my_service start 运行一个 SpringBoot java web 应用程序,它将所有日志信息写入 .../logs/current 日志文件。为了捕获此日志信息,我添加了命令 tail -f/opt/services/my_service/logs/current 但在这种情况下,Jenkins 构建永远不会结束))例如 tail -f 命令永不停止。

有没有办法执行我的构建后脚本(它只在远程服务器上启动我的网络应用程序)并在 2 分钟内抓取 .../logs/current 日志文件,或者直到这个日志有一行“Web应用程序 MyApplication 已启动”。

我想在 Jenkins 的控制台输出 中查看 .../logs/current 日志文件的内容,并在 2 分钟后杀死 tail -f

最佳答案

tail -f 在被中断之前不会结束,因此您的脚本永远不会结束运行。

你可以做的是在你的日志上使用 grep -q,当它找到它的模式时,它将以 0 退出状态退出:

grep -q 'Web app MyApplication has been Started' <(tail -f /opt/services/my_service/logs/current)

关于java - 如何获取特定日志文件并在 jenkins 控制台输出中显示其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34466477/

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