2012-03-09 112 views
2

我使用Ant,它基本上是一個Java程序,用於在Solaris上啓動ksh(test.ksh)腳本。在這個ksh中,調用另一個啓動程序的ksh(test1.ksh)腳本,我希望這個程序可以繼續運行。爲什麼我的子任務在ant任務中被殺死?

Ant目標看起來就像這樣:

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

的問題是,我發現當螞蟻的目標完成,該計劃已被殺害。 我已通過添加

<sleep seconds="300"/> 

確認,因爲從我的應用程序的日誌,它可以運行約3分鐘後,我補充睡眠,它可以運行約8分鐘。

我在Ant腳本中使用

<parallel> 

嘗試,但沒有奏效。 我也嘗試使用nohup啓動ksh,但沒有奏效。

有什麼建議嗎? 如果可能的話,請解釋一下shell的工作原理。

+0

雖然你的問題在技術上是關於[unix.se]的話題,但它似乎主要是關於Ant,它是一個構建工具,因此它擁有更多的專業知識。所以你的問題已經轉移到[so]。 – Gilles 2012-03-09 21:24:47

+0

這聽起來像你的shell腳本test1.ksh正在完成,而不是像你期待的那樣無限期運行。也許你應該在shell腳本中發佈代碼,或者解釋一些你正在嘗試做的事情。從目前的描述來看,似乎是一個殼問題。 – 2012-03-09 22:26:44

+0

您是否嘗試在ksh文件名末尾添加'&':' ./ test.ksh&',這是一個很長的過程,但它可能會起作用。 – Michael 2012-03-26 15:43:48

回答

0

shellscript任務只是exec ant任務的擴展,根據documentation,它可以使用所有相同的屬性。您可能需要添加菌種= TRUE這是exec屬性之一,你的shell的任務是這樣的:

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

菌種=真正應該引起shell腳本被設置爲一個單獨的進程,並能夠活在java/ant進程完成後開啓。