通常用命令、shell腳本,或者直接運行程序可執行的程序。像java的jar包可以用java -jar xxx.jar執行。eclipse也可以cd到eclipse解壓目錄,然後./eclipse執行eclipse這個程序。
可以看看shell腳本,和java相關的命令和工具(javac,javap,jvisualvm,jconsole等等)。
所有的軟體都有一個可執行腳本或者可執行程序。cd過去sh xxx.sh 或者./xxx.sh就可以在命令行執行。像tomcat也有startup.sh和shutdown.sh。你也可以看看,其實就是一個很復雜的shell腳本
B. linux環境下java調用.sh文件帶參數
試試另一種方法
String[] cmd = {"/home/xiang/start.sh", "參數1", "參數2"};
Runtime.getRuntime().exec(cmd);
C. linux鍛戒護java-jarlinux鍛戒護java
linux涓嬫庝箞鎵揷ab鍖,makecab鍛戒護鑳藉惁鍦╨inux涓嬩嬌鐢錛宩ava灝唗xt鏂囦歡鍔ㄦ佸彲浠ヤ紶鏁版嵁鍔ㄦ佺殑鎵揷ab鍖咃紵
Linux涓嬮潰鍙浠ョ敤寰堝氬帇緙╁寘錛7ztar.gz絳夋牸寮忥紝鍘嬬緝鏍煎紡鐢ㄣ傚畨瑁呯▼搴忕殑錛屽彲浠ユ墦鍖呮垚rpm錛宒eb鍖呯瓑銆備笉鐭ラ亾浣犱負灝勯棬瑕佺敤cab鍖
Java鍦╨inux涓婅皟鐢╯hell鑴氭湰錛
榪戞湡姝eソ緇撳悎宸ヤ綔瀹炶返錛屽垎浜浜嗕竴綃囧叧浜嶫ava濡備綍璋冪敤Shell鐨勬枃絝狅紝甯屾湜鑳藉熷府鍒版偍銆傚唴瀹瑰備笅銆
銆奐ava閰峉hell絳変簬緹庨厭鍔犲挅鍟°
鍖栧︿腑鎴戜滑寰楃煡銆屾阿姘斿姞姘ф皵鍦ㄧ偣鐕冪殑鎯呭喌涓嬩細鐢熸垚姘淬嶃
鐢熸椿涓鎴戜滑寰楃煡銆岃壇杈板姞緹庢櫙鐨勬儏鍐典笅浼氬緱鍒板崈閲戞槬瀹典竴鍒匯嶃
鎶鏈涓婂張浣曞皾涓嶆槸濡傛ゅ憿錛熷厛鍋囪句竴涓鍦烘櫙錛欱OSS璁╀綘瀹炵幇涓涓鏈嶅姟鐩戞帶鐨勬寚鎸ュわ紝鑳界湅鍒版瘡涓鏈嶅姟鍣ㄧ殑紓佺洏鍓╀綑絀洪棿錛岃兘鐪嬪埌銆傘傘傝兘鐪嬪埌銆傘傘
鍏跺疄璁茬湡錛屽疄鐜版濊礬鏈夊緢澶氾紝浣嗘槸涓嶇¢粦鐚鐧界尗鑳芥姄浣忚侀紶閮芥槸濂界尗錛屼粖澶╂垜浠灝濊瘯鐢↗ava涓嶴hell鎼閰嶄竴涓嬶紝鐪嬬湅鏄鍚︿細浜х敓鎯婂囩殑鍙嶅簲銆
1.棣栧厛閫氳繃JDK婧愮爜錛屽搧涓鍝丷untime榪欐澂緹庨厭銆
涓婂浘鏄鎽樺彇JDK涓璕untime鐨勯儴鍒嗘簮鐮侊紝涓昏佸垎鎴4澶т唬鐮佹墊潵綺楃暐璁よ瘑濂廣
絎涓鍧椾唬鐮佹碉紝鍙浠ョ湅鍑篟untime鏋勯犵佹湁鍖栵紝鎻愪緵浜嗛潤鎬佸睘鎬э紝騫舵彁鍓嶅壋寤哄硅薄瀹炰緥錛屽苟鎻愪緵鑾峰彇瀹炰緥鐨勯潤鎬佹柟娉曪紝榪欎笉灝辨槸鍗曚緥璁捐℃ā寮忕殑浣跨敤涔堬紝褰撴湁闈㈣瘯瀹樺啀闂璁捐℃ā寮忥紝鎷垮幓鐙傚柗銆
絎浜屽潡浠g爜孌碉紝涓昏佹槸addShutdownHook()鏂規硶錛屾坊鍔犲叧闂鐨勯挬瀛愶紝璇寸殑鐩寸櫧鐐癸紝鍏跺疄鍏佽哥爺鍙戜漢鍛樻彃鍏ヤ竴孌靛湪JVM鍏抽棴鏃舵墽琛岀殑浠g爜銆備緥濡傚湪鎼寤烘湇鍔℃嗘灦鏃訛紝闈㈠歸渶瑕佸畬鎴愪紭闆呭仠鏈嶏紝鎵撴壂鎴樺満錛岄噴鏀捐祫婧愮瓑絳夛紝璇稿傛ょ被鐨勫満鏅涓嬮兘寰堟湁鐢ㄣ傚叾涓鍦═omcat銆丣etty絳夊瑰櫒涓閮藉彲浠ョ湅鍒皊hutdownHook鐨勮韓褰便
Runtimeruntime=Runtime.getRuntime();
runtime.addShutdownHook(newThread(){
@Override
publicvoidrun(){
System.out.println("鎵撴壂鎴樺満錛岄噴鏀捐祫婧愶紝瀹屾垚浼橀泤鍋滄湇");
}
});
System.out.println("鏈嶅姟鍚鍔ㄥ畬鎴");
浠g爜榪愯屾晥鏋滃備笅銆
鏈嶅姟鍚鍔ㄥ畬鎴
鎵撴壂鎴樺満錛岄噴鏀捐祫婧愶紝瀹屾垚浼橀泤鍋滄湇
絎涓夊潡浠g爜孌碉紝涓昏佸睍鐜癑DK閽堝筊untime鎻愪緵鐨勭郴鍒梕xec閲嶈澆鏂規硶錛岃繖涓鏄鏈嬈″垎浜鐨勯噸鐐癸紝閲嶅ご鎴忔渶鍚庡啀璇淬
絎鍥涘潡浠g爜孌碉紝涓昏佹槸Runtime鎻愪緵鐨勪竴浜涜幏鍙栫郴緇熶俊鎮鐨凙PI錛岀洿鎺ユ姏浠g爜錛屾嬁鍘葷敤灝辮屼簡銆
Runtimeruntime=Runtime.getRuntime();
System.out.println(String.format("JVM鍙鐢ㄦ湰鏈篊PU鍐呮牳鏁%d",runtime.availableProcessors()));
//榛樿や負緋葷粺鐨1/4
System.out.println(String.format("鏈澶у彲鐢ㄥ唴瀛樼┖闂%dM",runtime.maxMemory()/1024/1024));
//榛樿や負緋葷粺鐨1/64
System.out.println(String.format("鍙鐢ㄥ唴瀛樼┖闂%dM",runtime.totalMemory()/1024/1024));
System.out.println(String.format("絀洪棽鍐呭瓨絀洪棿%dM",runtime.freeMemory()/1024/1024));
浠g爜榪愯岃緭鍑哄備笅錛屽叾瀹炵湡瀹炵幆澧冧腑涓嶅Θ鐢ㄦā鏉垮紩鎿嶧reeMarker娓叉煋錛岀劧鍚庨氳繃閭浠跺憡璀︼紝瀹炵幇鐨勯兼牸楂樹竴浜涖
2.鍦ㄨ︾粏璇碦untime.exec()榪欎釜閲嶅ご鎴忎箣鍓嶏紝鍐嶅搧涓鍝乨f榪欐懼挅鍟°
Linuxdf鍛戒護錛岀敤浜庢樉紺虹洰鍓嶅湪緋葷粺涓婄殑紓佺洏浣跨敤鎯呭喌緇熻★紝涓昏佺敤浜庢煡鐪嬬佺洏鐨勫垎鍖猴紝紓佺洏宸蹭嬌鐢ㄧ殑絀洪棿錛屽墿浣欑殑絀洪棿銆
鍛戒護濡備笅錛
df......
甯哥敤閫夐」濡備笅錛
3.Runtime緹庨厭鍔燬hell鍜栧暋浼氬彂鐢熶粈涔堝憿錛
閲嶅ご鎴忓紑濮嬶紝鍥炲埌Runtime鐨勬簮鐮侊紝鎴戜滑鐪嬪埌exec()緋誨垪鏂規硶浼氬府鎴戜滑鍚鍔ㄤ竴涓狿rocess榪涚▼錛岄偅涓嶅Θ鎶奷f-h鍛戒護浼犲叆榪涘幓涓鎺㈢┒絝熴
publicclassFoo{
publicstaticvoidmain(Stringargs)throwsException{
//df鍛戒護鐢ㄤ簬鏌ョ湅紓佺洏鐨勫垎鍖猴紝紓佺洏宸蹭嬌鐢ㄧ殑絀洪棿錛屽墿浣欑殑絀洪棿
//df-h浠ュ悎閫傜殑鍗曚綅鏉ユ樉紺轟俊鎮
System.out.println(exec("df-h"));
}
privatestaticStringexec(Stringcommand)throwsException{
Stringcmd={"/bin/sh","-c",command};
StringBuilderout=newStringBuilder();
BufferedReaderreader=null;
InputStreamin=null;
try{
Processprocess=Runtime.getRuntime().exec(cmd);
in=process.getInputStream();
reader=newBufferedReader(newInputStreamReader(in));
Stringline;
while((line=reader.readLine())!=null){
out.append(line+"n");
}
process.waitFor();
}finally{
if(reader!=null){
reader.close();
}
}
returnout.toString();
}
}
浠g爜涓浼氬彂鐜拌皟鐢ㄤ簡process鐨剋aitFor()鏂規硶錛屾ゆ柟娉曚綔鐢ㄤ細瀵艱嚧褰撳墠綰跨▼絳夊緟錛屼竴鐩磋佺瓑鍒扮敱璇Process瀵硅薄琛ㄧず鐨勮繘紼嬬粓姝錛屽叾瀹炰篃灝辨槸絳夊緟鎶奺xec閲岄潰鍚鍔ㄧ殑Process涓鐨勬墍鏈変簨閮藉共瀹岋紙鐢熶駭涓婂嚭闂棰樼殑澶у氬嚭鍦ㄨ繖鍎匡級錛屼唬鐮佽繍琛屾晥鏋滃備笅銆
鏁堟灉紜瀹炲彲浠ワ紝閭d箞榪欎箞涓鏉ワ紝鎯崇洃鎺х粺璁′粈涔堝姛鑳斤紝涓嶅Θ鐩存帴鎶婂懡浠や氦緇橨ava紼嬪簭鍘繪墽琛屽嵆鍙銆
4.
濡傛灉鍏蟲敞涓鐚垮皬璁茬殑浼欎即搴旇ユ竻妤氾紝鍦ㄣ婂備綍璁㎎ava搴旂敤鎴愪負鏉涓嶆葷殑灝忓己錛燂紙涓綃囷級銆嬨婂備綍璁㎎ava搴旂敤鎴愪負鏉涓嶆葷殑灝忓己錛燂紙涓嬬瘒錛夈嬩袱綃囦腑閮界敤鍒頒簡ProcessBuilder鏉ユ墽琛屽懡浠ゅ惎鍔ㄨ繘紼嬶紝閭Runtime涓嶱rocessBuilder鐨勪富瑕佸尯鍒鏄鍟ュ憿錛
鍏跺疄Runtime.exec()鏂規硶璁捐★紝鍙鎺ュ彈涓涓鍗曠嫭鐨勫瓧絎︿覆錛岃繖涓瀛楃︿覆鏄閫氳繃絀烘牸鏉ュ垎闅斿彲鎵ц屽懡浠ょ▼搴忓拰鍙傛暟鐨勶紱褰撶劧涔熷彲浠ユ帴鍙楀瓧絎︿覆鏁扮粍鍙傛暟銆
濡備笂鍥炬墍紺猴紝ProcessBuilder鐨勬柟娉曞叆鍙傛槸涓涓狶istString>鎴栬呭氫釜瀛楃︿覆銆
鐩稿悓鐐規槸ProcessBuilder.start()鍜孯untime.exec()鏂規硶閮借鐢ㄦ潵鍒涘緩涓涓鎿嶄綔緋葷粺榪涚▼錛堟墽琛屽懡浠よ屾搷浣滐級銆
5.濂戒簡錛屽嚑鍒嗛挓鐨勭畝鍗曞垎浜錛屼富瑕佽╀綘鎺ヨЕ騫剁湡姝hよ瘑涓涓婻untime錛屽笇鏈涜兘甯鍔╀綘鍦ㄥ伐浣滀腑閿︿笂娣昏姳銆
鏈鍚庝緷鐒剁敤闃塊噷鏂板叚鑴夌炲墤涓鐨勪笁鑴夐佺粰澶у訛細浠婂ぉ鏈濂界殑琛ㄧ幇鏄鏄庡ぉ鏈浣庣殑瑕佹眰錛涙ゆ椂姝ゅ埢闈炴垜鑾灞烇紱璁ょ湡鐢熸椿蹇涔愬伐浣滐紒
D. java 中 如何通過命令行來傳遞參數
可以在命令行運行java程序時加上程序的參數。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代碼截圖:
解釋一下: String[ ] args
該參數,是一個字元串數組,用來接收從命令行輸入的參數
1. 參數之間用空格隔開
2. java解釋器會自動處理,把用空格隔開的每一個參數通過args數組傳遞給買呢()方法。
3. 參數的下標從0開始,args[0]表示第一個參數,例如java HelloWorld 10 20 30
4.可以有多個空格,多個空格會被忽略。
(4)linux運行java命令行參數擴展閱讀:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等 。