Java調用Linux命令執行

來源:互聯網
上載者:User

標籤:pwd   and   說明   path   參數   壓縮   linux c   color   相同   

  1. 調用方式

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。如下程式所示為將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命令執行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.