我正在尝试通过 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”后面意外地加了一个分号。令我感兴趣的是,这会启动应用程序,显示第一行,然后退出,没有任何错误消息!