運行shell命令我想從一個基於Spring Web應用程序調用mysqldump和輸出寫入到文件中。我希望能夠爲用戶提供一個下載鏈接到服務器上創建的文件。從春天的WebApp
我試着運行以下:
Runtime.getRuntime().exec("/usr/bin/mysqldump -u <username> -p<password> <db_name> >" + fileName);
Runtime.getRuntime().exec("mysqldump -u <username> -p<password> db_name >" + fileName);
我試過文件名的下列值。
fileName = "mysql.sql";
fileName = "/tmp/mysql.sql";
fileName = servletContext.getRealPath("") + "/mysql.sql";
但是該命令不成功。 process.exitValue()返回的2或6
ProcessBuilder pb = new ProcessBuilder("/usr/bin/mysqldump", " -u ", "<username>", " -p<password>", "<db_name>", " > ", fileName);
pb.redirectErrorStream(true); // equivalent of 2>&1
Process p = pb.start();
p.waitFor();
這並不有助於以及一個錯誤代碼。
有人能告訴我什麼是運行從Web應用程序這樣的命令的最佳方式?輸出文件應該創建在哪裏? 上面的命令有什麼問題?
我需要能夠在不同的系統(Linux,Windows)中運行此。該webapp可以在任一系統上運行。如果需要,我可以在屬性文件中抽象出mysqldump路徑。但我該如何做這項工作?
我想這個問題是輸出重定向像運行「ls」命令返回退出代碼0,但輸出不會去任何地方。 –