从 Jenkins 在后台启动 shell 脚本的简洁方法

2023-12-29

从詹金斯启动脚本的正确方法是什么,不要让构建挂起,并让进程保持运行?我似乎无法让它发挥作用。脚本不运行或构建挂起。

如果我放入构建的“执行 shell”步骤bash relaunch.sh & or relaunch.sh > output.log & or nohup bash relaunch.sh &, 什么都没发生;构建完成,但进程未运行。我想这可能与詹金斯等待有关要关闭的错误管道 https://stackoverflow.com/a/30627285/5961990.

If I do nohup bash relaunch.sh 2>&1 > output.log按照建议here https://stackoverflow.com/questions/28319984/how-can-i-call-shell-script-to-start-a-backend-java-process,输出被正确重定向,但构建挂起(未完成),并且当我终止构建时进程终止。

Adding export BUILD_ID=dontKillMe,按照建议here https://stackoverflow.com/questions/14584933/jenkins-kills-jboss-server-when-job-finishes, here https://serverfault.com/questions/502593/starting-a-forever-process-in-a-jenkins-build-step, and here https://stackoverflow.com/questions/9567441/jenkins-seems-to-be-the-target-for-nohup-in-a-script-started-via-ssh-how-can-i,无论是“执行 shell”步骤还是脚本本身都没有帮助。当我终止构建时,构建挂起并且进程终止。不用说,我对linux的了解非常有限。

人们如何以干净的方式做到这一点?


实现此目的的一个便捷方法是更改​​环境变量BUILD_ID under 执行外壳 which Jenkins's 进程树杀手 https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller在寻找。

通过做,

BUILD_ID=dontKillMe nohup bash relaunch.sh &

詹金斯将假设后台作业不是由构建产生的,并且在完成作业后不会杀死它们。

谢谢Joshua https://stackoverflow.com/users/436336/joshua根据他的观察,你也可以使用JENKINS_NODE_COOKIE as

JENKINS_NODE_COOKIE=dontKillMe
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Jenkins 在后台启动 shell 脚本的简洁方法 的相关文章

  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 如何从python导入路径中删除当前目录

    我想使用 Mercurial 存储库hg本身 也就是说 我克隆了 Mercurialhttps www mercurial scm org repo hg https www mercurial scm org repo hg并想运行一些h
  • 使用 BASH 和 AWK 创建 HTML 表

    我在创建 html 表来显示文本文件中的统计信息时遇到问题 我确信有 100 种方法可以做得更好 但这里是 以下脚本中的注释显示了输出 bin bash function getapistats curl s http api exampl
  • '>&0' 有用途吗(重定向到标准输入)?

    在 bash 中你可以这样做 echo test gt 1 重定向到标准输出 尽管它已经到那里了 echo test gt 2 重定向到标准错误 echo test gt 0 重定向到标准输入 当我做最后一个时 我的终端仍然打印test就像
  • 从 Ansible 中的文件结果中提取文件名

    我正在尝试使用 Ansible 的结果find模块 它返回在特定文件夹中找到的文件列表 问题是 当我迭代结果时 我没有文件名 我只有它们的完整路径 包括名称 有没有一种简单的方法来使用find result item下面提供file nam
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 对于客户端服务器程序,并行接收多个客户端连接请求的最佳方法是什么?

    该程序是在 Linux 上用 C 语言开发的客户端服务器套接字应用程序 每个客户端都连接到一个远程服务器并将其自身记录为在线 在任何给定时间点很可能有多个客户端在线 所有客户端都尝试连接到服务器以将自己记录为在线 忙碌 空闲等 那么服务器如
  • cat/Xargs/命令 VS for/bash/命令

    Linux 101 Hacks 一书的第 38 页建议 cat url list txt xargs wget c 我通常这样做 for i in cat url list txt do wget c i done 除了长度之外 还有什么东
  • BlueZ D-Bus C,应用 BLE

    我正在尝试编写一个应用程序来搜索附近的蓝牙设备并与它们通信 我的应用程序将用 C 语言编写 并打算在 Linux 下工作 是否有通过 C 中的 D Bus 使用 BlueZ 的教程或示例 此应用程序的目的是从 BLE 中的文件发送数据 你能
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • mod_perl 无法看到 /tmp 中的文件

    我有一些 mod perl 代码试图访问 tmp 下的文件 但它抛出 没有这样的文件或目录 错误 我在代码中添加了一个 ls al tmp 来查看 Perl 在目录中看到的内容 它只给了我 和 drwxrwxrwt 2 root root
  • 输入菜单选项后,我的 bash 菜单不会返回...这是我的代码

    不知道我在这里做错了什么 但我需要菜单循环并且只有在退出时才退出 我尝试了很多选项 但它只是不断弄乱我的代码和菜单 非常感谢任何帮助和 或想法 bin bash A menu driven shell script sample templ
  • 终止 ssh 会话会终止正在运行的进程

    我正在使用 ssh 连接到我的 ubuntu 服务器 我使用命令启动编码程序 然而 似乎当我的 ssh 会话关闭时 因为我在进入睡眠状态的笔记本电脑上启动它 有没有办法避免这种情况 当然 阻止我的笔记本电脑休眠并不是永久的解决方案 运行你的
  • bash 脚本中的未绑定变量

    在调试我的脚本时 我变得绝望 我使用了我的高级同事向我推荐的一些结构 但我不知道如何使其正常工作 bin bash x set ueo pipefail exec gt tmp dq log source BASH SOURCE env p
  • 如何将字符串推送到标准输入?在启动时通过 stdin 提供输入,然后以交互方式读取 stdin 输入 [重复]

    这个问题在这里已经有答案了 有没有办法在调用程序时将字符串 推送 到程序的标准输入流 这样我们就可以达到这样的效果 echo something my program 但不是在之后读取 EOF something my program将从原
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • 如何转义 bash 别名中的空格?

    尝试在我的 bashrc 文件中设置一些别名 这个 export alias umusic Volumes 180 gram Uncompressed 出现以下错误 bash cd Volumes 180 没有这样的文件或目录 当我尝试 c
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • Mongo:无法连接到服务器 127.0.0.1:27017 位于 src/mongo/shell/mongo.js:145

    当我尝试在 ubuntu 中的 shell 中运行 mongo 或打开 rockmongo 时 我看到以下错误 couldn t connect to server 127 0 0 1 27017 at src mongo shell mo

随机推荐

  • Ubuntu rvm设置问题

    我按照下面的教程进行操作 https www digitalocean com community articles how to install ruby on rails on ubuntu 12 04 lts precise pang
  • 自定义通知最大高度?

    我正在尝试制作自定义通知 但它最终总是非常小 大约是大多数通知的大小 我可以看到 Netflix 和 Youtube 在投射到 chromecast 设备时显示更大的通知 这些通知看起来是自定义的 它们可能是大视图 他们怎么把它们弄得这么大
  • 从 Enum 中获取数据以显示在 UIPickerView 上

    我正在创建一个简单的视图 其中有一个 UIPickerView 我想从枚举中显示 PickerView 上的选择 我创建了一个可能的饮料枚举 enum drink case coffee case tea case cola case wa
  • 什么情况下UIElement.UpdateLayout()可以调用Environment.FailFast?

    因此 我有一个控件 为了响应其项目的更改 调用 UpdateLayout 这会产生如下所示的堆栈跟踪 描述 应用程序通过以下方式请求进程终止 System Environment FailFast 字符串消息 消息 无法恢复 系统错误 堆栈
  • 确保 Vuex 状态在渲染组件之前加载

    我有一个add user vue成分 这是我用于添加新用户和编辑现有用户的模板 所以在页面加载时我检查路线是否有id 如果是这样 我从状态数组加载用户来编辑它 我的问题是user未定义 因为状态数组users是空的 如何确保我的用户对象不是
  • 批处理脚本中 FOR 循环中位置 8191 处的扩展字符产生不需要的输出

    试图了解这里发生了什么 当 a 扩展字符序列从位置 8191 开始时 下面的 DOS 批处理脚本会出现问题 通过添加或减去 x 或 y 字符将其移动到另一个位置 它会很好地扩展 我知道 Windows 有 8191 字节限制 但为什么当 g
  • ASP.NET Core 2.0 MVC 自定义数据库初始值设定项类上的 ObjectDisposeException

    我在自定义数据库初始值设定项类中遇到以下异常 发生 System ObjectDisposeException HResult 0x80131622消息 无法访问已处置的对象 导致此错误的常见原因 正在处理从依赖注入解析的上下文 并且 然后
  • WPF 两个命令处理程序,一个命令

    我来自第三方控件 它正在实现ApplicationCommands SelectAll 然而我想要的行为略有不同 没有我可以重写的虚拟方法 当我注册一个类处理程序时 就像这样 CommandManager RegisterClassComm
  • 如何指定 Jackson 仅使用字段 - 最好是全局的

    默认的 jackon 行为似乎使用属性 getter 和 setter 和字段来序列化和反序列化为 json 我想使用这些字段作为序列化配置的规范源 因此根本不希望杰克逊查看属性 我可以使用注释在单个类的基础上执行此操作 JsonAutoD
  • 正确或干净的 MVC 4 项目中存在大量 jquery 异常

    无论我下载什么项目 如果它是 MVC Music Store Pluralsight 的 Ode to Food 甚至是干净的项目 我都会因为 JavaScript 代码中某处的语法错误而遇到很多运行时异常 这些文件有几十万个字符长 是自动
  • EF7支持EDMX方式吗?。如何使用EF7执行存储过程?

    EF7支持EDMX方式吗 如何使用EF7执行存储过程 任何建议都是值得赞赏的 没有 EDMX 支持 但数据库优先将继续 Here https msdn microsoft com en us magazine dn890367 aspx你可
  • 如何在 Admob 中删除应用程序,或者至少隐藏或重命名它?

    我在 2011 年就看到有人问过这个问题 但从那以后已经过去 3 年了 Admob 迁移到了一个全新的版本 我希望有些事情已经得到修复 在新的 Admob 的 货币化 部分中 我创建了我需要的应用程序和广告 一切都很好 但最近我想检查一下我
  • 和 IEnumerable<'V> 的类型' aria-label='如何创建实现 IDictionary<'K, 'V> 和 IEnumerable<'V> 的类型'> 如何创建实现 IDictionary<'K, 'V> 和 IEnumerable<'V> 的类型

    我想创建一个实现 IDictionary 和 IEnumerable 的只读键控集合 采用明显的方法我得到以下错误 This type implements or inherits the same interface at differe
  • 缓存控制标头不起作用

    我已在响应标头中将缓存控制设置为Cache Control public max age 86400 但是当我尝试刷新页面或打开新选项卡时 它总是会访问我的服务器 我得到的响应状态是 200 我也检查了该请求的服务器日志chrome cac
  • HyperLogLog 算法如何工作?

    我最近在业余时间学习了不同的算法 我遇到的一个看起来非常有趣的算法是 HyperLogLog 算法 它估计列表中有多少个唯一的项目 这对我来说特别有趣 因为它让我回到了我的 MySQL 时代 当时我看到了 基数 值 直到最近我一直认为它是计
  • 使用完 .NET 服务引用客户端后是否需要关闭它

    我试图查明在使用完 net 服务引用客户端后是否有必要关闭它 我在网上遇到的几乎所有示例似乎都没有 但生成的客户端实现了 IDisposable 并且由于它确实打开了与服务的连接 我的直觉告诉我 当您需要关闭该连接时 您需要关闭该连接 已经
  • 团队代理和管理员 - Apple Developer

    Apple 开发者网站中的团队代理和管理员有什么区别 有哪些不同的权利 查看官方页面 http developer apple com programs roles index php http developer apple com pr
  • Eclipse - Android 不自动生成 R 类

    有一个奇怪的 使用 Eclipse Juno 过去几个月一切正常 昨天的某个时候 当 Eclipse 清理我的项目时 出现了崩溃 弹出了 Windows 错误报告 没听清崩溃的名称 现在 我在 gen 中没有 R java 类 并且我尝试过
  • std::线程问题

    我想我有一个非常糟糕的概念问题 为什么我使用 valgrind 时会遇到很多竞争条件错误 首先我认为这可能是一个错误 我在论坛中看到更新的 Linux 滚动版本将解决这个问题 所以现在我有 opensuse tubeleweed 100 更
  • 从 Jenkins 在后台启动 shell 脚本的简洁方法

    从詹金斯启动脚本的正确方法是什么 不要让构建挂起 并让进程保持运行 我似乎无法让它发挥作用 脚本不运行或构建挂起 如果我放入构建的 执行 shell 步骤bash relaunch sh or relaunch sh gt output l