導航:首頁 > 編程語言 > 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相關的資料

熱點內容
安卓怎麼測量開機電壓 瀏覽:775
程序員素質大全 瀏覽:952
激戰伺服器不見了怎麼辦 瀏覽:982
安卓如何退回初始系統 瀏覽:951
用什麼手錶能代替app 瀏覽:706
女程序員熬夜體檢 瀏覽:716
解壓故事校園戀愛又煩惱 瀏覽:557
冰箱壓縮機放多久能啟動 瀏覽:173
軟體演算法發明專利 瀏覽:988
旁氏演算法 瀏覽:767
程序員那麼可愛電視劇免費觀看極速版 瀏覽:749
程序員那麼可愛陸漓孩子保住了嗎 瀏覽:566
如何獲取伺服器dns秒解 瀏覽:665
如何破解大黃蜂的加密文件 瀏覽:13
新概念英語第三冊pdf 瀏覽:403
分項詳細估演算法步驟 瀏覽:438
ipad桌面文件夾放大 瀏覽:893
我的世界基岩版怎麼進國際伺服器 瀏覽:518
福州醫院有沒有解壓艙 瀏覽:472
帶pwm的51單片機 瀏覽:918