我正在使用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的工作原理。
答案 0 :(得分:0)
shellscript任务只是exec ant任务的扩展,根据documentation,它可以使用所有相同的属性。您可能需要将spawn = true(这是exec属性之一)添加到您的shellcript任务中,如下所示:
<shellscript shell="ksh" spawn="true">./test.ksh</shellscript>
Spawn = true应该将shell脚本设置为一个单独的进程,并且能够在java / ant进程完成后继续运行。