为什么我的子任务在ant任务中被杀?

时间:2012-03-09 10:29:33

标签: shell process solaris ant

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

Ant目标看起来像这样:

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

问题是我发现当蚂蚁目标完成时,该程序已被杀死。 我通过添加

来确认
    <sleep seconds="300"/>

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

我尝试过使用

    <parallel> 

在蚂蚁脚本中但没有奏效。 我也尝试使用nohup来启动ksh但是没有用。

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

1 个答案:

答案 0 :(得分:0)

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

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

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