日期:2014-05-16  浏览次数:20900 次

使用ssh远程执行程序出现问题
现在我有A、B两台机器 两台机器下,具有相同的文件 test.sh 和 shTest.jar 两个文件放在同一个目录下。

我在A机器 使用 ssh usernameA@192.168.1.10X "sh test.sh start" test.sh能正常执行脚本,脚本里面会使用nohup 执行一个java程序 执行命令如下:
Perl code

nohup java -Xmx128m -jar shTest.jar > server.log 2>&1 & 
java程序正常运行并输出结果到server.log文件

但我从B机器 使用 ssh usernameB@192.168.1.10Y "sh test.sh start" 命令能正常执行脚本。但脚本里使用nohup执行java程序却失败,程序没成功启动。会返回一个错误 nohup 无法运行命令 "java" ;没有那个文件或目录

我做里如下测试。1:我直接在机器B上执行test.sh脚本。 运行成功。 2:我直接从 A机器 ssh B机器,在终端中执行test.sh。运行成功。
请高手指教一下,出什么问题了?

------解决方案--------------------
通过ssh调用可能改变了程序运行环境。比如你上面所说:无法运行命令 "java" ;没有那个文件或目录。这说明在该调用的环境变量中无法找到JAVA的环境变量。可以尝试修改下环境变量。
------解决方案--------------------
一个usernameA,一个usernameB,看看你的java权限
------解决方案--------------------
你用绝对路径执行你,你的两个用户名不同进入的路径是不同的,如果java在/home/usernameA/java下,你ssh ssh usernameA@192.168.1.10X 进入的就是usernameA,执行就是对的,ssh usernameB@192.168.1.10Y 你进入的是/home/usernameB,执行就不对了