2010-09-24 138 views
2

我有一個使用'catalina.sh start'啓動tomcat的shell腳本。這個腳本運行良好,並啓動tomcat,即使我退出我的SSH會話。Jsch退出後進程死亡

我試圖從Jsch

​​

這就要求我的腳本罰款和Tomcat啓動時調用此腳本,但只要進程退出,Tomcat是給出一個關機信號,並將其關閉。我試圖使用setDaemonThread而沒有成功。任何想法爲什麼發生這種情況?

更新:腳本還做了幾個與啓動tomcat無關的sudo操作,所以它需要tty。用戶在sudoers中設置,以便不需要密碼,所以不需要提示。

回答

3

我相信你不應該爲命令分配一個pty來讓命令在後臺運行並且不會附加到終端上。如果您改爲commandChannel.setPty(false),會發生什麼情況?

編輯:你是否真的在運行sudo並在腳本中提供密碼?不應該以root身份運行它嗎? 如果使用sudo是你想要的,運行後命令使用disownnohup終端分離它們​​(explanation

+0

我得到'sudo:對不起,你必須有一個tty來運行sudo',這就是爲什麼我把它加在第一位。 – shipmaster 2010-09-24 00:45:29

+0

nohup工作,謝謝! – shipmaster 2010-09-24 01:02:06

1

這一問題是否會立即發生,只有當您的會話退出?這聽起來像你運行的命令產生一個單獨的過程。也許你沒有給予足夠的時間來產生其他進程。

如果使用nohup執行命令,會發生什麼情況?

+0

D'oh!再次狙擊! – Synesso 2010-09-24 01:44:14