我们需要从服务器1上的脚本通过ssh在服务器2上运行java程序。当我登录到服务器2并运行java程序时,它可以正常工作。 但是,当我尝试通过使用ssh从服务器1触发java程序时,它会抛出java not found异常。当使用ssh从脚本运行java程序时,bashrc用于查找java
java路径存在于服务器2(/home/java/jdk_1.7/bin/java)上的bashrc文件中,服务器2上的“哪个java”也显示此路径,这解释了为什么直接触发程序在服务器2上工作。
是否有除了.bashrc的地方所以从不同的服务器
添加代码 脚本中的相关部分的服务器从脚本调用时被检测到的java java的路径应该是存在的任何其他文件1
#!/bin/bash
MAIN_CLASS = “com.appStarter.main”
JAVA_CONFIG = “$PATH:/home/java/java_1.6/bin” ($PATH on this box has /app/java/jdk_170_100_64/bin)
USER_NAME= sudoUserName
START_COMMAND = java $MAIN_CLASS $USER_NAME
eval “$START_COMMAND”
该调用哪个ssh到服务器2下面是从该java程序
public String ssh(String host, String command)
String ssh = “/usr/bin/ssh”
String result = triggerCommand(ssh, “-a”, host, command)
return result;
}
public String triggerCommand(final String… command){
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start();
InputStream iS = process.getInputSteam();
Reader reader= new BufferedReader(new InputStreamReader(iS));
String output=””;
…output will contain the output from the reader
}
在上述类摘录的Java程序,主机2和命令是一个UNIX COM普通话像startComponent.sh图所示
#!usr/bin/ksh
MAIN_CLASS = “com.componentStarter.main”
START_COMMAND = java $MAIN_CLASS
eval “$START_COMMAND”
我们的.bash_profile和配置文件,如下包括bashrc中,并设置路径,如图
if [ if ~/.bashrc ]; then
. ~/.bashrc
fi
PATH = $PATH (where $PATH includes /app/java/jdk170_5-64b/bin)
EXPORT PATH
您必须显示您使用的确切命令,或者很难分辨发生了什么。 –
将代码从bashrc复制到脚本 – YOU
对'PATH'的修改应该在'.bash_profile'中,以便它们在登录shell中生成。从登录shell调用的任何其他shell会通过环境继承修改后的路径。 – chepner