導航:首頁 > 編程語言 > java遠程調用shell

java遠程調用shell

發布時間:2023-11-29 06:30:43

❶ 如何在java程序中調用linux命令或者shell腳本

java程序是提供了這個一方法,Processpro=Runtime.getRuntime().exec(cmds);
但是一般來說,盡量去用一些其他腳本(lua,shell,python)去執行一系列linux命令比較靈活, 而且耗費資源少。但是Runtime.getRuntime().exec()這種調用方式在java虛擬機中是十分消耗資源的,即使命令可以很快的執行完畢,頻繁的調用時創建進程消耗十分可觀。
java虛擬機執行這個命令的過程是,首先克隆一條和當前虛擬機擁有一樣環境變數的進程,再用這個新的進程執行外部命令,最後退出這個進程。頻繁的創建對CPU和內存的消耗很大。


下面是一個調用linux命令的例子:

publicclassTest{
publicstaticvoidmain(String[]args)throwsException{
String[]cmds={"/bin/sh","-c","ps-ef|grepjava"};
Processpro=Runtime.getRuntime().exec(cmds);
pro.waitFor();//阻塞,直到上述命令執行完
InputStreamin=pro.getInputStream();
BufferedReaderread=newBufferedReader(newInputStreamReader(in));
Stringline=null;
while((line=read.readLine())!=null){
System.out.println(line);
}
}
}

註:參數中逗/bin/sh逗 逗-c逗 是可以用shell執行指定的命令的意思
這里/bin/sh -cps -ef|grep java,會執行ps linux命令

❷ java程序里調用linux命令

1.Java調用shell

Java語言以其跨平台性和簡易性而著稱,在Java裡面的lang包里(java.lang.Runtime)提供了一個允許Java程序與該程序所運
行的環境交互的介面,這就是Runtime類,在Runtime類里提供了獲取當前運行環境的介面。
其中的exec函數返回一個執行shell命令的子進程。exec函數的具體實現形式有以下幾種:
public Process exec(String command) throws IOException
public Process exec(String command,String[] envp) throws
IOException
public Process exec(String command,String[] envp,File dir) throws
IOException
public Process exec(String[] cmdarray) throws IOException
public Process exec(String[] cmdarray, String[] envp) throws
IOException
public Process exec(String[] cmdarray, String[] envp,File dir)
throws IOException

我們在這里主要用到的是第一個和第四個函數,具體方法很簡單,就是在exec函數中傳遞一個代表命令的字元串。exec函數返回的是一個Process類
型的類的實例。Process類主要用來控制進程,獲取進程信息等作用。(具體信息及其用法請參看Java doc)。

1)執行簡單的命令的方法:

代碼如下:

❸ java調用shell腳本,並得到shell腳本的返回值

文件名確實不對
.sh文件才是linux下的批處理文件,它不認bat的
另外要保證.sh中調用的其他函數在當前目錄下能正常運行

❹ Java調用linux的shell腳本不成功解決得分,該如何處理

代碼是這樣寫的try {
String cmds= sh /usr/local/a.bat ;
Process child = Runtime.getRuntime().exec(cmds);} catch (IOException e) {
e.printStackTrace();}
a.bat 文件是在linux 下的一個批處理文件,裡面兩條語句,單獨執行sh /usr/local/a.bat
------解決方案--------------------------------------------------------
------解決方案--------------------------------------------------------
a.bat 是XP 下的運行程序
------解決方案--------------------------------------------------------
我覺得有以下可能:
1、/usr/local/a.bat 文件沒有被授予可執行許可權,導致無法執行;
2、java 未能識別sh 命令,最好調用java.lang.Runtime.exec(String cmd, String[] envp)
方法,將sh 的上下文路徑設置進去,估計就沒有問題了。
------解決方案--------------------------------------------------------
糾正一下2 樓的說法,實際上只要文件中的內容是linux 命令或相應批處理命令,其文件名
------解決方案--------------------------------------------------------
從代碼上分析,應該是環境變數的問題java 找不到sh 的執行路徑

閱讀全文

與java遠程調用shell相關的資料

熱點內容
命令方字幕 瀏覽:591
蘋果手機如何連接ipad伺服器 瀏覽:975
列印矩陣java 瀏覽:393
如何雙開一個不能雙開的app 瀏覽:528
抖音喜歡加密了怎麼打開 瀏覽:385
mysql命令行顯示表 瀏覽:364
國防離我們源碼200字 瀏覽:777
vmwaretoolslinux 瀏覽:92
命令方塊生存放不了嗎 瀏覽:697
程序員入門很難嗎 瀏覽:102
70後程序員照片 瀏覽:194
一個普通程序員能幹多久 瀏覽:936
adobe的PDF轉換器 瀏覽:862
單片機數字碼表匯編 瀏覽:486
單片機開發用的軟體 瀏覽:159
程序員8個演算法題 瀏覽:402
php題庫系統 瀏覽:228
王牌戰爭文明重啟選什麼伺服器 瀏覽:662
簡述對稱加密法 瀏覽:665
c語言數學編程 瀏覽:998