通常用命令、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应用程序、分布式系统和嵌入式系统应用程序等 。