IT科技

當前位置 /首頁/IT科技 > /列表

java調用linux命令行

java調用linux命令行有兩種調用方式。一種是直接調用linux命令,二是將linux命令寫到.sh腳本中,調用腳本執行。

1、直接調用:

使用java中lang包下面的Runtime類和Process類,其中Runtime類中的Runtime.getRuntime().exec(linux command)方法可以直接執行linux命令,而Process類可以接收Runtime.getRuntime().exec()類的返回值,並提供了waitFor()方法和destroy()方法,waitFor()方法的作用在於等待此process執行完成後再執行後面的內容,destroy()方法作用在於銷燬process。

2、調用shell腳本:

直接調用方法存在一些弊端,比如複雜命令不好實現、有些命令莫名其妙實現不了等。因此我推薦使用調用shell腳本的方式實現linux命令。具體實現方法為:首先將命令寫在shell腳本(.sh)中,然後在Runtime.getRuntime().exec()中調用“sh  path/.sh”,其中path為shell腳本的路徑。

實現案例如下圖所示:

java調用linux命令行

其中imp.sh中的命令是:

1 name=$12 su - oracle -c "imp user/pwd@實例名 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命令行 第2張

TAG標籤:命令行 linux 調用 java #