linux腳本jar
題主是否想詢問「linux一個終端執首旁行多個java-jar腳本的操作步驟」linux一個終端執行多個java-jar腳本,具體鏈槐步驟如下:
1、打開棚芹友終端,進入jar包所在的目錄。
2、使用Java命令執行第一個jar包,執行一個名為test1.jar的jar包。
3、執行第一個jar包後,可以按Ctrl+C組合鍵停止該進程。
4、使用Java命令執行第二個jar包,執行一個名為test2.jar的jar包。
5、重復上述步驟,執行其他jar包。
2. Linux下運行jar包的幾種方式
1 阻塞式方式
java -jar xxx.jar
特點: 當前終端的會話窗口被阻塞, 可按CTRL + C中斷程序的運行, 或者直接關閉會話窗口 —— 此時jar程序將終止.
2 後台運行方式
# 通過"&"符號實現後台運行:
java -jar xxx.jar &
特點: 當前終端的會話窗口不會被阻塞, 但是如果關閉當前窗口, 程序將終止運行.
3 後台持續運行方式
# 通過"nohup"命令實現後台運行:
nohup java -jar xxx.jar &
nohup命令是不掛斷運行命令的意思.
特點: 當用戶退出或終端關閉時, 程序的運行不受影響.
說明: 用nohup命令運行任務時, 默認情況下這個任務的所有輸出都將被重定向到nohup.out文件中, 除非另外指定輸出文件. 指定輸出文件方式為:
# 將輸出重定向到xxx.log文件中:
nohup java -jar xxx.jar > xxx.log &
> 符號是重定向符, 實現: 把它之前命令的所有輸出信息重定向到後面的文件中, 而不是顯示到屏幕上.
3. jar鍖呭惎鍔ㄥ懡浠わ紙鏌ョ湅jar鍖呭唴瀹瑰懡浠わ級
jar鍖呭惎鍔ㄥ懡浠
1銆侀栧厛鍩烘湰鐨勮繍琛宩ar鍖呭懡浠ゅ備笅
榪欎釜鍛戒護浼氶攣瀹氬懡浠ょ獥鍙o紝褰撶獥鍙e叧闂鏃訛紝紼嬪簭涔熷氨鑷鍔ㄩ鍑轟簡錛屾墍浠ラ渶瑕佽﹋ar鍖呭悗鍙拌繍琛屻
2銆佸悗鍙板惎鍔ㄨ繍琛
3銆佹寚瀹氳緭鍑烘枃浠
濡備笅錛寈xx.log灝辨槸鎸囧畾鐨勮緭鍑烘枃浠訛紝濡傛灉涓嶆寚瀹氾紝榛樿ゅ湪jar鍖呮墍鍦ㄧ洰褰曪紝鍒涘緩nohup.out鏂囦歡銆
鏌ョ湅jar鍖呭唴瀹瑰懡浠
JAR鍖呮槸Java涓鎵鐗規湁涓縐嶅帇緙╂枃妗o紝鎴戜滑鍙浠ラ氳繃鐩稿叧鍛戒護瑙e帇jar鍖咃紝涓嬮潰鐢辨垜涓哄ぇ瀹舵暣鐞嗕簡linux涓嬭В鍘媕ar鍖呭懡浠ょ殑鐩稿叧鐭ヨ瘑錛屽笇鏈涘瑰ぇ瀹舵湁鎵甯鍔┿
涓銆乴inux瑙e帇jar鍖呭懡浠も斺攋ar鍛戒護璇﹁В
jar鍛戒護閫夐」錛
jar鍛戒護鏍煎紡錛歫ar{ctxuf}[vme0Mi][-C鐩褰昡鏂囦歡鍚...
鍏朵腑{ctxu}榪欏洓涓閫夐」蹇呴』閫夊叾涓銆俒vfme0Mi]鏄鍙閫夐夐」錛屾枃浠跺悕涔熸槸蹇呴』鐨勩
-c鍒涘緩涓涓猨ar鍖
-t鏄劇ずjar涓鐨勫唴瀹瑰垪琛
-x瑙e帇jar鍖
-u娣誨姞鏂囦歡鍒癹ar鍖呬腑
-f鎸囧畾jar鍖呯殑鏂囦歡鍚
-v鐢熸垚璇︾粏鐨勬姤閫狅紝騫惰緭鍑鴻嚦鏍囧噯璁懼
-m鎸囧畾manifest.mf鏂囦歡.
-0浜х敓jar鍖呮椂涓嶅瑰叾涓鐨勫唴瀹硅繘琛屽帇緙╁勭悊
-M涓嶄駭鐢熸墍鏈夋枃浠剁殑娓呭崟鏂囦歡銆傝繖涓鍙傛暟涓庡拷鐣ユ帀-m鍙傛暟鐨勮劇疆
-i涓烘寚瀹氱殑jar鏂囦歡鍒涘緩緔㈠紩鏂囦歡
-C琛ㄧず杞鍒扮浉搴旂殑鐩褰曚笅鎵ц宩ar鍛戒護,鐩稿綋浜巆d鍒伴偅涓鐩褰曪紝鐒跺悗涓嶅甫-C鎵ц宩ar鍛戒護
浜屻乴inux瑙e帇jar鍖呭懡浠も斺攋ar浣跨敤鑼冧緥
鍒涘緩jar鍖
$jarcfhello.jarhello鍒╃敤test鐩褰曠敓鎴恏ello.jar鍖,濡俬ello.jar瀛樺湪,鍒欒嗙洊
鍒涘緩騫舵樉紺烘墦鍖呰繃紼
$jarcvfhello.jarhello鍒╃敤hello鐩褰曞壋寤篽ello.jar鍖,騫舵樉紺哄壋寤鴻繃紼
渚嬶細E:jarcvfhello.jarhello
鏍囨槑娓呭崟
澧炲姞錛歨ello/
澧炲姞錛歨ello/TestServlet2.class
澧炲姞錛歨ello/HelloServlet.class
澧炲姞錛歨ello/TestServlet1.class
鏄劇ずjar鍖
$jartvfhello.jar鏌ョ湅hello.jar鍖呯殑鍐呭
鎸囧畾鐨刯ar鍖呭繀欏葷湡瀹炲瓨鍦錛屽惁鍒欎細鍙戠敓FileNoutFoundException銆
瑙e帇jar鍖
$jarxvfhello.jar瑙e帇hello.jar鑷沖綋鍓嶇洰褰
jar涓娣誨姞鏂囦歡
$jarufhello.jarHelloWorld.java灝咹elloWorld.java娣誨姞鍒癶ello.jar鍖呬腑
鍒涘緩涓嶅帇緙╁唴瀹筳ar鍖
$jarcvf0hello.jar*.class鍒╃敤褰撳墠鐩褰曚腑鎵鏈夌殑.class鏂囦歡鐢熸垚涓涓涓嶅帇緙﹋ar鍖
鍒涘緩甯manifest.mf鏂囦歡鐨刯ar鍖
$jarcvfmhello.jarmanifest.mfhello
鍒涘緩鐨刯ar鍖呭氫簡涓涓狹ETA-INF鐩褰,META-INF姝㈠綍涓嬪氫簡涓涓猰anifest.mf鏂囦歡,鑷充簬manifest.mf鐨勪綔鐢,鍚庨潰浼氭彁鍒.
蹇界暐manifest.mf鏂囦歡
$jarcvfMhello.jarhello鐢熸垚鐨刯ar鍖呬腑涓嶅寘鎷琈ETA-INF鐩褰曞強manifest.mf鏂囦歡
鍔-C搴旂敤錛
$jarcvfmhello.jarmymanifest.mf-Chello/
琛ㄧず鍦ㄥ垏鎹㈠埌hello鐩褰曚笅鐒跺悗鍐嶆墽琛宩ar鍛戒護
-i涓簀ar鏂囦歡鐢熸垚緔㈠紩鍒楄〃
褰撲竴涓猨ar鍖呬腑鐨勫唴瀹瑰緢濂界殑鏃跺欙紝浣犲彲浠ョ粰瀹冪敓鎴愪竴涓緔㈠紩鏂囦歡錛岃繖鏍風湅璧鋒潵寰堢渷浜嬨
$jarihello.jar
鎵ц屽畬榪欐潯鍛戒護鍚庯紝瀹冧細鍦╤ello.jar鍖呯殑META-INF鏂囦歡澶逛笅鐢熸垚涓涓鍚嶄負INDEX.LIST鐨勭儲寮曟枃浠訛紝
瀹冧細鐢熸垚涓涓鍒楄〃錛屾渶涓婅竟涓簀ar鍖呭悕銆
瀵煎嚭瑙e帇鍒楄〃
jartvfhello.jarhello.txt
濡傛灉浣犳兂鏌ョ湅瑙e帇涓涓猨ar鐨勮︾粏榪囩▼錛岃岃繖涓猨ar鍖呭張寰堝ぇ錛屽睆騫曚俊鎮浼氫竴闂鑰岃繃錛
榪欐椂浣犲彲浠ユ妸鍒楄〃杈撳嚭鍒頒竴涓鏂囦歡涓錛屾參鎱㈡h祻!
jar-cvfhello.jarhello/*
渚嬪傚師鐩褰曠粨鏋勫備笅錛
hello
|---com
|---org
浣犳湰鎯沖彧鎶奵om鐩褰曞拰org鐩褰曟墦鍖咃紝鑰岃繖鏃秊ar鍛戒護浼氳繛鍚宧ello鐩媧嬩篃涓鍧楁墦鍖呰繘銆
榪欑偣澶у惰佹敞鎰忋俲ar鍛戒護鐢熸垚鐨勫帇緙╂枃浠朵細鍖呭惈瀹冨悗杈瑰嚭鐨勭洰褰曘傛垜浠搴旇ヨ繘鍏ュ埌hello鐩褰曞啀鎵ц宩ar鍛戒護銆
娉ㄦ剰錛歮anifest.mf榪欎釜鏂囦歡鍚嶏紝鐢ㄦ埛鍙浠ヤ換鎸囧畾錛屼絾jar鍛戒護鍙璁よ瘑Manifest.mf錛屽畠浼氬圭敤鎴鋒寚瀹氱殑鏂囦歡鍚嶈繘琛岀浉搴斿湪鐨勮漿鎹錛岃繖涓嶉渶鐢ㄦ埛鎷呭績銆
涓夈乴inux瑙e帇jar鍖呭懡浠も斺擩AR鍛戒護浣跨敤鎶宸
jar鍒涘緩鍘媄IP鏂囦歡
jarcvfMTestZIP.jartest鍔燤鍙傛暟涓轟簡涓嶇敓鎴怣ETA-INF鐩稿叧鍐呭
鐒跺悗灝員estZIP.jar鏀逛負TestZIP.zip灝卞彲浠ワ紝鏄涓嶆槸寰堢畝鍗....
浣跨敤WinRAR瑙e帇.jar鏂囦歡
涓婅竟鎴戜滑宸茬粡璇磋繃浜嗭紝璇碕AR鏂囦歡鏄涓縐嶇壒孌婄殑鍘嬬緝鏂囦歡錛屾墍浠ュ畠褰撶劧鍙浠ョ敤鎴戜滑甯哥敤鐨勪竴浜涜В鍘嬬緝宸ュ叿鏉ヨВ浜嗭紝
鑷充簬鎬庝箞瑙o紝榪欏氨涓嶇敤鎴戣翠簡鍚с
鐢╓inRAR鐢熸垚.jar鏂囦歡
鎴戜滑宸茬粡璇磋繃JAR鍖呬笌ZIP鍖呬富瑕佸尯鍒灝辨槸JAR鍖呬腑澶氫竴涓狹ETA-INF鐨勭洰褰曪紝
META-INF鐩褰曚笅鏈変竴涓猰anifest.mf鏂囦歡錛屾垜浠鍙瑕佸緩絝嬪ソ鐩稿叧鐨勭洰褰曚竴鍘嬬緝灝卞彲浠ヤ簡銆
鐩褰曠殑緇撴瀯濡備笅錛
TestJar
|--META-INF
|--manifest.mf
|--鐩稿叧鐨勭被鏂囦歡
娉ㄦ剰錛氳繕搴旇ュ湪manifest.mf濉鍐欏唴瀹癸紝涓嶄細鍐?鐓х潃涓涓宸叉湁鐨勬妱涓嶅氨琛屼簡
鎬庝箞鍚鍔╦ar鍖呮湇鍔
榪愯宩ar鏂囦歡鐨勫叿浣撴搷浣滄ラゅ備笅錛
1銆侀栧厛鎴戜滑鍙浠ヤ嬌鐢╓inRAR鍘嬬緝鍖呮潵鏌ョ湅jar鏂囦歡鍐呭癸紝鍓嶆彁鏄鐢佃剳涓婅佸厛瀹夎呴塛inRAR瑙e帇緙╄蔣浠躲傞変腑jar鍖咃紝鐐瑰嚮榧犳爣鍙抽敭錛屽湪寮瑰嚭鐨勮彍鍗曚腑閫夋嫨鐢╓inRAR鎵撳紑
2銆佷嬌鐢╓inRAR鎵撳紑jar鏂囦歡鍚庯紝鍙浠ョ湅鍒癹ar鏂囦歡涓鐨勭洰褰曠粨鏋勶紝鐐瑰嚮鐩褰曞氨鍙浠ョ湅鍒扮洰褰曚笅鐨勬枃浠朵簡銆備篃鍙浠ラ夋嫨瑙e帇緙╋紝鍙浠ュ湪瑙e帇緙╁悗鐨勬枃浠跺す涓鏌ョ湅銆
3銆侀櫎涓婅堪鏂規硶澶栵紝鎴戜滑鍙浠ラ栧厛紜瀹氫綘鐨勭數鑴戜笂鏄鍚﹀畨瑁呬簡jdk錛屼嬌鐢ㄥ揩鎹烽敭WIN+R錛屽惎鍔ㄨ繍琛岀獥鍙o紝杈撳叆cmd錛屾寜涓嬬『瀹氭寜閽銆
4銆佺數鑴戝睆騫曚笂浼氶粯璁ゆ墦寮cmd紿楀彛錛屾垜浠鍙浠ュ湪cmd紿楀彛涓杈撳叆鍛戒護鏉ョ『瀹歫ava鐜澧冩槸鍚﹀凡緇忓畨瑁呬簡銆
5銆佽緭鍏java-version錛屾湁java鐨勭増鏈鍙峰洖鏄捐存槑鐢佃剳涓婂凡緇忓畨瑁卝ava鐜澧冦傚傛灉娌℃湁闇瑕佸啀鐢佃剳涓婁笅杞藉畨瑁卝dk鐜澧冦
6銆侀変腑jar鏂囦歡錛岀偣鍑婚紶鏍囧彸閿錛屽湪寮瑰嚭鐨勮彍鍗曚腑錛岄夋嫨鎵撳紑鏂瑰紡錛岀劧鍚庨夋嫨JavaPlatformSEbinary鏉ユ墦寮鍗沖彲銆
java鍚鍔╦ar鍛戒護
java-jar鍛戒護璁劇疆鍚鍔ㄥ弬鏁頒笁縐嶆柟娉曘
1銆丏propName絳変簬propValue鐨勫艦寮忔惡甯︼紝瑕佹斁鍦╦ar鍙傛暟鍓嶉潰銆
2銆佸弬鏁扮洿鎺ヨ窡鍦ㄥ懡浠ゅ悗闈銆
3銆乻pringboot鐨勬柟寮忥紝key絳変簬value鏂瑰紡銆
jar鍖呭仠姝㈣繍琛屽懡浠
濡傛灉浣犳槸鍦ㄥ懡浠よ岄偅閲岃繍琛宩ar搴旂敤紼嬪簭鐨勮瘽錛屼綘鍙浠ユ寜Ctrl+C鏉ュ仠姝銆
4. 如何在linux下執行jar文件
linux下執行jar文件方法:命令行下進入文件目錄,執行java -jar file.jar即可,也可在桌面創建一個啟動器,在命令欄填寫相關的命令:java -jar /file路徑/file.jar,這樣在桌面雙擊即可打開該jar文件x0dx0ax0dx0a創建可執行的 JAR 文件包詳解:JAR 文件就是 Java Archive File,顧名思意,它的應用是與 Java 息息相關的,是 Java 的一種文檔格式。JAR 文件非常類似 ZIP 文件--准確的說,它就是 ZIP 文件,所以叫它文件包。JAR 文件與 ZIP 文件唯一的區別就是在 JAR 文件的內容中,包含了一個 META-INF/MANIFEST.MF 文件,這個文件是在生成 JAR 文件的時候自動創建的.舉個例子,如果我們具有如下目錄結構的一些文件:x0dx0a==x0dx0a`-- testx0dx0a `-- Test.classx0dx0a把它壓縮成 ZIP 文件 test.zip,則這個 ZIP 文件的內部目錄結構為:x0dx0atest.zipx0dx0a`-- testx0dx0a `-- Test.classx0dx0a如果我們使用 JDK 的 jar 命令把它打成 JAR 文件包 test.jar,則這個 JAR 文件的內部目錄結構為:x0dx0atest.jarx0dx0a|-- META-INFx0dx0a| `-- MANIFEST.MFx0dx0a`-- testx0dx0a`--Test.classx0dx0a創建可執行的 JAR 文件包,需要使用帶 cvfm 參數的 jar 命令,同樣以上述 test 目錄為例,命令如下:jar cvfm test.jar manifest.mf test,這里 test.jar 和 manifest.mf 兩個文件,分別是對應的參數 f 和 m,其重頭戲在 manifest.mf。因為要創建可執行的 JAR 文件包,光靠指定一個 manifest.mf 文件是不夠的,因為 MANIFEST 是 JAR 文件包的特徵,可執行的 JAR 文件包和不可執行的 JAR 文件包都包含 MANIFEST。關鍵在於可執行 JAR 文件包的 MANIFEST,其內容包含了 Main-Class 一項。這在 MANIFEST 中書寫格式如下:Main-Class: 可執行主類全名(包含包名)x0dx0a例如,假設上例中的 Test.class 是屬於 test 包的,而且是可執行的類 (定義了 public static void main(String[]) 方法),那麼這個 manifest.mf 可以編輯如下:Main-Class: test.Test ,這個 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且該行以一個回車符結束即可。創建了 manifest.mf 文件之後,我們的目錄結構變為:x0dx0a==x0dx0a|-- testx0dx0a| `-- Test.classx0dx0a`-- manifest.mfx0dx0a這時候,需要到 test 目錄的上級目錄中去使用 jar 命令來創建 JAR 文件包。也就是在目錄樹中使用==表示的那個目錄中,使用如下命令:jar cvfm test.jar manifest.mf testx0dx0a之後在==目錄中創建了 test.jar,test.jar 就是執行的 JAR 文件包。運行時只需要使用 java -jar test.jar 命令即可。x0dx0a需要注意的是,創建的 JAR 文件包中需包含完整的、與 Java 程序包結構對應的目錄結構。而 Main-Class 指定的類,也必須是完整的、包含包路徑的類名,如上例的 test.Test;而且在沒有打成 JAR 文件包之前可以使用 java 來運行這個類,即在上例中 java test.Test 是可以正確運行的 (當然要在 CLASSPATH 正確的情況下)。
5. linux鍚鍔╦ar鍖呮寚瀹氭棩蹇楁寜鏃墮棿杈撳嚭
鍙浠ヤ嬌鐢↙inux涓鐨刢ron浠誨姟鏉ユ寜鏃墮棿杈撳嚭鏃ュ織錛屾牴鎹瓹SDN鍗氬㈡煡璇㈢粨鏋滄樉紺恆
1銆佸壋寤轟竴涓鍚嶄負mylog.sh鐨勮剼鏈鏂囦歡錛屽苟灝嗗叾淇濆瓨鍦ㄤ富鐩褰曚笅銆
2銆佸湪鑴氭湰鏂囦歡涓娣誨姞鍛戒護鏉ュ惎鍔↗ava搴旂敤紼嬪簭錛屽苟灝嗘棩蹇楄緭鍑哄埌mylogfile.log涓銆
3銆佷嬌鐢╟rontab緙栬緫鍣ㄦ墦寮cron浠誨姟錛屽湪緇堢涓杈撳叆鍛戒護銆
4銆佸湪緙栬緫鍣ㄤ腑娣誨姞鍛戒護錛屽湪姣忓皬鏃剁殑0鍒嗛挓鎵ц宮ylog.sh鑴氭湰鏂囦歡錛屽苟灝嗘棩蹇楄緭鍑哄埌mylogfile.log鏂囦歡涓銆
5銆佷繚瀛樺苟閫鍑篶rontab緙栬緫鍣ㄣ傜幇鍦錛孞ava搴旂敤紼嬪簭灝嗘寜鐓ф寚瀹氱殑鏃墮棿杈撳嚭鏃ュ織鍒版寚瀹氱殑鏂囦歡涓銆
6. linux下java程序的start.sh啟動腳本中classpath中載入了好多jar包,腳本啟動後進程名特別長,不方便查看
通常有兩種方式:
1、使用變數將那些jar包放進去,比如
#!/bin/bash
MYCP=a.jar:b.jar:c.jar:......
java -cp "$MYCP" ...
2、如果那些jar包都在一個路徑裡面如lib,那麼最好去設jre載入的擴展目錄如下:
java -Djava.ext.dirs=lib ...