本地运行命令与使用 SSH 执行远程命令之间的区别

本地运行命令与使用 SSH 执行远程命令之间的区别

我正在尝试通过 SSH 连接到远程机器,并在该机器上运行 .ksh 文件来运行 Java 程序。

如果使用 Putty 之类的工具通过 SSH 进入机器,并运行以下命令:

cd /folder/folder/examples; ksh runexample.ksh NameOfClass methodName

Java 程序运行完整过程,发送一些数据,将其放入外部数据库,并显示响应。但是,如果我尝试从另一台机器上的命令行通过 SSH 进入该机器,如下所示:

/usr/bin/ssh [email protected] "cd /folder/folder/examples; ksh runexample.ksh NameOfClass methodName;"

程序没有完全执行。它没有给我任何错误,但它只是返回通知,表示类文件已成功加载,显示 Java 程序的第一行,然后它退出,没有发送请求或接收响应。

我的两种方法有什么区别?知道是什么原因造成的吗?

答案1

您的 shell 在 java 命令完成之前退出,并终止所有从属进程。您需要重写脚本,使其等待 java 程序完成,或者重写脚本,使进程在退出后继续存在。

答案2

问题是我在 SSH 命令中的“methodName”后面意外地加了一个分号。令我感兴趣的是,这会启动应用程序,显示第一行,然后退出,没有任何错误消息!

相关内容