我有一个在Linux上运行的java程序,试图调用一个shell脚本。此shell脚本尝试将本地目录复制到另一台服务器。调用脚本的方法是:
bash copy_logs.sh "TestResults/07232015042652"
当我从linux终端调用它时,该目录会成功复制到远程服务器。现在我想从Java程序执行它。我的代码段如下:
Sting direc = "07232015042652"
p = Runtime.getRuntime().exec("bash copy_logs.sh \"TestResults/"+direc+"\"");
当我运行它时,虽然我没有得到任何错误或异常,但文件永远不会被复制。
copy_logs.sh的内容如下:
scp -r $TS test@192.168.199.57:/home/apacheweb/html/Weekly_Status/prov_check/
if [ $? -eq 0 ]
then
echo "File copied successfully"
else
echo "Failed to copy"
我试图通过
打印执行结果InputStream is = p.getInputStream();
StringBuilder sb = new StringBuilder();
int i=0;
try {
while ((i=is.read())!=-1){
sb.append((char)i);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(sb);
我得到输出:无法复制。只是想知道这可能是什么原因???
答案 0 :(得分:0)
得到它的工作:
ProcessBuilder pb = new ProcessBuilder("bash", "-c", "/bin/bash copy_logs.sh \"TestResults/"+directoryName+"\"");
Process shell = pb.start();