標籤:pwd and 說明 path 參數 壓縮 linux c color 相同
- 調用方式
Java調用linux命令執行的方式有兩種,一種是直接調用linux命令,一種是將linux命令寫到.sh指令碼中,然後呼叫指令碼執行。
- 詳細說明
直接調用:使用java中lang包下面的Runtime類和Process類,其中Runtime類中的Runtime.getRuntime().exec(linux command)方法可以直接執行linux命令,而Process類可以接收Runtime.getRuntime().exec()類的傳回值,並提供了waitFor()方法和destroy()方法,waitFor()方法的作用在於等待此process執行完成後再執行後面的內容,destroy()方法作用在於銷毀process。如下程式所示為將fileName路徑下的所有檔案打包成zip壓縮包,使用的方法為直接調用。
調用shell指令碼:直接調用方法存在一些弊端,比如複雜命令不好實現、有些命令莫名其妙實現不了等。因此我推薦使用調用shell指令碼的方式實現linux命令。具體實現方法為:首先將命令寫在shell指令碼(.sh)中,然後在Runtime.getRuntime().exec()中調用“sh path/.sh”,其中path為shell指令碼的路徑。很多情況下我們需要迴圈調用相同的linux命令來實現我們的功能,此時需要向linux命令中傳遞參數,實現案例如下所示:
其中imp.sh中的命令如下所示:
1 name=$12 su - oracle -c "imp user/[email protected]執行個體名 file=filepath full=y ignore=y"
該語句實現的功能為在root使用者下,切換到oracle目錄,並將某個.dmp檔案使用imp命令匯入oracle資料庫,然後返回到root使用者下,將該語句放到for迴圈中實現了多個.dmp檔案匯入oracle資料庫的功能。其中.dmp檔案的檔案名稱是變數,在shell命令中以name=$1代替,在linux命令中以${name}代指檔案名稱,在調用時傳入該參數的值,linux命令中$1,$2…$n是佔位變數,在使用變數時按順序使用,賦值時按照相應的順序進行賦值。
Java調用Linux命令執行