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 ...