从 sshj 启动时,来自控制台的命令不会 运行
Command from console doesn't run when launched from sshj
我从控制台启动 jar
,它 运行 没问题:
nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!
当我 运行 来自远程计算机的相同命令与 sshj
时,它 returns 一个 pid 但在控制台中看不到进程,实际上是进程没有 运行。在这两种情况下,我都通过 ssh,public 密钥,使用相同的用户登录。
代码 运行通过 sshj
执行命令:
try (Session session = sshClient.startSession()) {
final Command cmd = session.exec("nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!");
String response = (IOUtils.readFully(cmd.getInputStream()).toString());
// response shows a pid number
cmd.join(2, TimeUnit.SECONDS);
System.out.println("\n** exit status: " + cmd.getExitStatus());
//exit status is 0
}
解决方案:
使用之前的命令,我 cd
到 jar 所在的目录。
但是 cp
并没有消除在命令 运行 after[ 中使用文件的完整路径的需要=12=]
我从控制台启动 jar
,它 运行 没问题:
nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!
当我 运行 来自远程计算机的相同命令与 sshj
时,它 returns 一个 pid 但在控制台中看不到进程,实际上是进程没有 运行。在这两种情况下,我都通过 ssh,public 密钥,使用相同的用户登录。
代码 运行通过 sshj
执行命令:
try (Session session = sshClient.startSession()) {
final Command cmd = session.exec("nohup /usr/bin/java -jar payara-micro-5.183.jar myapp.war > log.out 2>&1 & echo $!");
String response = (IOUtils.readFully(cmd.getInputStream()).toString());
// response shows a pid number
cmd.join(2, TimeUnit.SECONDS);
System.out.println("\n** exit status: " + cmd.getExitStatus());
//exit status is 0
}
解决方案:
使用之前的命令,我
cd
到 jar 所在的目录。但是
cp
并没有消除在命令 运行 after[ 中使用文件的完整路径的需要=12=]