【问题标题】:Launching an independent process from a .bat从 .bat 启动独立进程
【发布时间】:2009-10-02 13:45:05
【问题描述】:

我有一个 Hudson 工作,它启动一个 .bat 脚本文件,该文件本身启动我的 Jonas 应用程序服务器和其他几个任务。

脚本从我的奴隶上的 Hudson 正确启动,然后我的应用程序服务器启动,但在我的 Hudson 作业结束时,应用程序服务器被终止。这是因为在此过程中启动的所有进程都共享相同的管道(stdin/sdtout/stderr),如http://wiki.hudson-ci.org/display/HUDSON/Spawning+processes+from+build 所述。

正如您已经了解的那样,这真的不是我想要的!实际上,我在上面描述的那份工作之后立即启动了另一份 Hudson 工作,以测试我的应用程序。因此,由于我的应用程序服务器在 Hudson 作业结束的同时被杀死,我的测试根本无法运行......

那我该如何解决呢?

这个问题与启动脚本的是 Hudson 密切相关,如果我从命令行启动相同的脚本,则根本不会出现问题...

在上面给出的链接中,他们建议使用允许在 Windows 中安排任务的“at”命令。我真的不想使用这个解决方案,因为这意味着修改我的 .bat 脚本,因为我是从 Hudson 启动它的。

  • 我想有一种方法可以对我的 .bat 文件说“好的,您将在独立进程中启动我的应用程序服务器”。你们知道怎么做吗?
  • 也许 Hudson 能够解决这个问题?你们哈德森的人知道吗?

提前感谢您的帮助!

【问题讨论】:

    标签: windows batch-file hudson


    【解决方案1】:

    这里的最佳做法是清除环境变量 BUILD_ID。在构建作业后进行清理时,Hudson 会查看每个进程中的 BUILD_ID 环境变量,以终止任何延迟的进程。因此,通过清除该环境变量,Hudson 不会终止该进程。

    【讨论】:

    • 感谢您的意见!我在您的个人资料中看到您是哈德逊大师;)我应该清除 BUILD_ID 变量还是应该将其设置为 BUILD_ID=dontKillMe ,就像我在链接 wiki.hudson-ci.org/display/HUDSON/Spawning+processes+from+build 上看到的那样?
    • 在 Hudons 中将 BUILD_ID 环境变量设置为 dontKillMe 工作正常,但正如报告的错误(上面的链接)中所解释的,这是一种解决方法。修复错误后,我将发布解决方案。谢谢!!
    • 设置 BUILD_ID 不是一种变通方法,它是当前推荐的解决方案。
    • 然而,这种方法并不适用于所有应用程序。例如,Weblogic 8.1 用 BUILD_ID=dontKillMe 轰炸了大半。
    • 对于那些正在寻找有关此解决方案的更多详细信息的人。我发现这个页面很有帮助:digitalsanctuary.com/tech-blog/general/…
    【解决方案2】:

    尝试使用START 命令启动您的应用程序服务器。 This 网站给出了一些使用示例。我想您必须对正确的参数进行一些实验,但您的第一次尝试应该是:

    START "appServer" "[path to your application server]\applicationServer.exe"
    

    【讨论】:

    • 在这个特定的上下文中,这个解决方案是不够的,因为一切都与 Hudson 中的一个错误相关联(参见前面的评论)。但在没有错误的情况下,这似乎是解决方案;)谢谢!
    • 让我重复一遍 - 这里没有错误,清除环境变量是处理问题的预期方法。问题 3105 是一个增强请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 2012-11-15
    • 2014-07-15
    • 2010-10-30
    • 2015-02-21
    • 2012-07-20
    • 2021-06-27
    相关资源
    最近更新 更多