gpt4 book ai didi

java - Jsch 退出后进程终止

转载 作者:行者123 更新时间:2023-11-30 07:36:12 31 4
gpt4 key购买 nike

我有一个使用“catalina.sh start”启动 tomcat 的 shell 脚本。此脚本运行良好并启动 tomcat,即使我退出 ssh session ,它也会保持运行状态。

我正在尝试从 Jsch 调用这个脚本

shell = new JSch();
session = shell.getSession(user, host, SSH_DEFAULT_PORT);
session.setConfig(config);
session.setPassword(password);
session.connect();
commandChannel = (ChannelExec) session.openChannel("exec");
commandChannel.setCommand(command);
commandChannel.setPty(true);
commandChannel.connect();

这很好地调用了我的脚本并且 tomcat 启动了,但是一旦进程退出,tomcat 就会收到一个关闭信号并且它会关闭。我尝试使用 setDaemonThread 但没有成功。知道为什么会这样吗?

更新:该脚本还执行一些与启动 tomcat 无关的 sudo 操作,因此它需要 tty。用户在 sudoers 中设置为不需要密码,因此不需要提示。

最佳答案

我认为您不应该为命令分配一个 pty 以便命令在后台运行而不是附加到终端。如果您改用 commandChannel.setPty(false) 会发生什么情况?

编辑:您实际上是在运行 sudo 并在脚本中提供密码吗?你不应该以 root 身份运行它吗?如果使用 sudo 是你想要的,在运行命令后使用 disownnohup ( explanation )

将它们从终端分离

关于java - Jsch 退出后进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3783441/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com