2010-09-24 215 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