重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
在java程序中如何調用linux的命令?如何調用shell腳本呢?
成都創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、網站制作、莒縣網絡推廣、重慶小程序開發、莒縣網絡營銷、莒縣企業策劃、莒縣品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯為所有大學生創業者提供莒縣建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com
這里不得不提到java的process類了。
process這個類是一個抽象類,封裝了一個進程(你在調用linux的命令或者shell腳本就是為了執行一個在linux下執行的程序,所以應該使用process類)。
process類提供了執行從進程輸入,執行輸出到進程,等待進程完成,檢查進程的推出狀態,以及shut down掉進程。
至于詳細的process類的介紹放在以后介紹。
另外還要注意一個類:Runtime類,Runtime類是一個與JVM運行時環境有關的類,這個類是Singleton的。
這里用到的Runtime.getRuntime()方法是取得當前JVM的運行環境,也是java中唯一可以得到運行環境的方法。(另外,Runtime的大部分方法都是實例方法,也就是說每次運行調用的時候都需要調用到getRuntime方法)
下面說說Runtime的exec()方法,這里要注意的有一點,就是public Process exec(String [] cmdArray, String [] envp);這個方法中cmdArray是一個執行的命令和參數的字符串數組,數組的第一個元素是要執行的命令往后依次都是命令的參數,envp感覺應該和C中的execve中的環境變量是一樣的,envp中使用的是name=value的方式。
下面說一下,如何使用process來調用shell腳本
例如,我需要在linux下實行linux命令:sh test.sh,下面就是執行test.sh命令的方法:
這個var參數就是日期這個201102包的名字。
String shpath="/test/test.sh"; //程序路徑
Process process =null;
String command1 = “chmod 777 ” + shpath;
process = Runtime.getRuntime().exec(command1);
process.waitFor();
String var="201102"; //參數
String command2 = “/bin/sh ” + shpath + ” ” + var;
Runtime.getRuntime().exec(command2).waitFor();
操作系統(無論Linux還是Windows)有一種“管道”的概念,可以把一個程序的標準輸入/輸出改到其他的地方。 你說的那些GUI外殼,就是為命令行程序創建了一個管道,標準輸入和標準輸出被改到了GUI外殼程序的內部。所以就不會再彈出命令行窗口了。 GUI外殼會根據你在窗口上的操作,通過管道,向命令行程序發送指令,就像你手動在命令行窗口上敲命令一樣。 命令行程序的標準輸出也會通過管道傳送到GUI外殼的內部,加以處理后在窗口上顯示個給你.
你把要執行文件的目錄在你說的profile里面聲明一下(路徑)。在path 加上pathmunge /home/test/out/bin/。生效指令source profile。改完后你可以用echo $PATH看看路徑是不是包含進去了。(我這是fedora,可能不一樣)