今天在linux中部署java項目,有一個需要備份達夢數據庫的功能,備份達夢數據庫使用了 達夢數據庫中安裝路徑bin文件夾下的 dexp 工具,進行邏輯備份。
遇到問題:同過java的 Runtime.getRuntime().exec(),執行linux命令 失敗
String command = " eacho a ";
String[] command = {"/bin/sh", "-c", command};
Process process = Runtime.getRuntime().exec(command);
執行成功
需要將 linux命令和 "/bin/sh" "-c" 組成以上數據形式執行,
“/bin/sh” : 使用/bin/sh來解釋執行
/bin/sh -c的必要性
解釋這句話的鏈接地址:https://blog.csdn.net/qq_34562093/article/details/89948303
利用 "sh -c" 命令,它可以讓 bash 將一個字串作爲完整的命令來執行,這樣就可以將 sudo 的影響範圍擴展到整條命令。具體用法如下:
$ sudo /bin/sh -c 'echo "hahah" >> test.asc'