我尝试使用以下代码段:
Process p;
String command="mysqldump -u'scmuser' -p'scm$123' --routines db_name > /home/ubuntu/wh_demo_db_reset.sql";
p = Runtime.getRuntime().exec(command);
不会生成转储文件,也不会抛出任何错误。我无法预测确切的问题,请帮助我。提前谢谢。
答案 0 :(得分:1)
元字符">"由shell实现;使用Runtime.exec()运行程序不涉及shell,因此mysqldump的最后两个参数是垃圾。使用Runtime.exec()的数组参数形式;传递" / bin / sh"作为第一个参数," -c"作为第二个,你的命令行作为第三个;这样,shell元字符将由/ bin / sh解释。
您可以将cmd数组形成为:
String[] cmdarray = {"/bin/sh","-c",command};
Process process = Runtime.getRuntime().exec(cmdArray);