【问题标题】:why is my sub-task being killed in ant task?为什么我的子任务在蚂蚁任务中被杀死?
【发布时间】:2012-03-09 10:29:32
【问题描述】:

我正在使用 Ant,它基本上是一个在 Solaris 上启动 ksh (test.ksh) 脚本的 java 程序。在这个 ksh 中,调用另一个 ksh (test1.ksh) 脚本来启动一个程序,我希望这个程序可以继续运行。

Ant 目标看起来像这样:

    <target name="start.loading.data.Global">
    <shellscript shell="ksh">./test.ksh</shellscript>
    <sleep seconds="300"/>
    </target>

问题是我发现当ant target完成时,程序已经被杀死了。 我已经通过添加确认它

    <sleep seconds="300"/>

因为从我的应用程序日志来看,它可以运行大约 3 分钟,而我添加睡眠后,它可以运行大约 8 分钟。

我尝试过使用

    <parallel> 

在 ant 脚本中但没有工作。 我也试过用nohup来启动ksh,但是没有用。

有什么建议吗? 如果可能,还请解释一下 shell 的工作原理。

【问题讨论】:

  • 虽然您的问题在技术上是 Unix & Linux 的主题,但似乎主要是关于 Ant,它是一种构建工具,Stack Overflow 拥有更多的专业知识。所以你的问题已经转移到Stack Overflow
  • 在我看来,您的 shell 脚本 test1.ksh 正在完成并且没有像您期望的那样无限期地运行。也许您应该在 shell 脚本中发布代码,或者解释更多您正在尝试做的事情。到目前为止,从您的描述来看,似乎是一个 shell 问题。
  • 您是否尝试过在 ksh 文件名的末尾添加 &amp;&lt;shellscript shell="ksh"&gt;./test.ksh &amp;&lt;/shellscript&gt;,这是一个很长的尝试,但也许它会起作用。

标签: shell process solaris ant


【解决方案1】:

shellscript 任务只是 exec ant 任务的扩展,根据documentation,它可以使用所有相同的属性。您可能需要将作为 exec 属性之一的 spawn=true 添加到您的 shellscript 任务中,如下所示:

<shellscript shell="ksh" spawn="true">./test.ksh</shellscript>

Spawn=true 应该导致 shell 脚本被设置为一个单独的进程,并且能够在 java/ant 进程完成后继续存在。

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 2011-04-17
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2011-10-15
    • 2015-05-30
    相关资源
    最近更新 更多