我使用Ant,它基本上是一个在Solaris上启动ksh(test.ksh)脚本的java程序。在这个ksh中,调用另一个启动程序的ksh(test1.ksh)脚本,我希望这个程序能够继续运行。
蚂蚁的目标看起来像这样:
<target name="start.loading.data.Global">
<shellscript shell="ksh">./test.ksh</shellscript>
<sleep seconds="300"/>
</target>
问题是我发现当蚂蚁目标完成时,程序已经被杀死了。我已经通过添加来确认
<sleep seconds="300"/>
因为从我的应用程序日志来看,它可以运行大约3分钟,在我添加睡眠后,它大约可以运行8分钟。
我试过使用
<parallel>
在ant脚本中,但不起作用。我也试着用nohup来启动ksh,但没有成功。
有什么建议吗?如果可能的话,还请解释shell是如何工作的。
shellscript任务只是exec-ant任务的扩展,根据文档,它可以使用所有相同的属性。您可能需要将执行属性之一的spawn=true添加到shell脚本任务中,如下所示:
<shellscript shell="ksh" spawn="true">./test.ksh</shellscript>
Spawn=true应该使shell脚本被设置为一个单独的进程,并能够在java/ant进程完成后继续运行。