文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

jar包的各种启动方式超详细总结

2023-05-14 11:40

关注

简介:该文总结了常归的jar包的启动方式,并分析各种启动方式的区别。该文所有场景均是以命令直接操作终端的结果,通过脚本执行以下命令会略有区别,不在本次讨论范围。

一、各种启动方式

1.java -jar

# 例子
java -jar test.jar

这是最简单的启动方式,同时弊端也是很多的。

弊端1:exit 退出终端会导致java进程中断。
弊端2:ctrl+c 退出启动展示页会导致java进程中断。
弊端3:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终端)。
弊端4:控制台日志不打印(这个可以不算弊端吧,其实很多场景不需要这个日志,这里姑且算是吧)

所以该命令是不能直接使用的。下面是演示使用ctrl+c退出启动展示页后程序进行自动中断的截图:

从截图中可以看到,当使用ctrl+c时,终端会终止刚刚使用java -jar启动的进程,所以导致了java进程的中断。

2.java -jar test.jar &

# 例子
java -jar test.jar &

可以看到这种启动方式是多了&,&的作用是让程序可以以后台模式运行,这样我们使用ctrl+c,或者exit退出启动页面时程序不会被终止,但是关闭终端会导致程序退出,无论是程序启动时直接关闭终端还是程序启动完毕在关闭,都会导致程序异常终止,总结如下:

弊端1:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终端)。
弊端2:控制台日志不打印(这个可以不算弊端吧,其实很多场景不需要这个日志,这里姑且算是吧)

下面是使用ctrl+c退出启动页的结果,可以发现此时程序还在运行。

3.nohup java -jar test.jar

# 例子
nohup java -jar test.jar

该命令相当于第一个场景增加了nohup命令,nohup命令其实就是为了指定输出文件的,用在这里自然就是指定java的输出了。nohup默认会将文件打印在当前文件夹下的nohup.out文件中,若是该文件权限不足,则会将日志输出到$HOME/nohup.out。值得一提的事,这里的输出接收的都是java控制台的输出。同时第一个场景拥有的弊端除了不打印控制台日志他都有。所以这个命令我们一般也不用。

弊端1:exit 退出终端会导致java进程中断。
弊端2:ctrl+c 退出启动展示页会导致java进程中断。
弊端3:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终端)。

【这里不重复验证了】

4.nohup java -jar test.jar &

# 例子
nohup java -jar test.jar & 

与上个命令相比增加了 &,作用可以类比第二个场景,然后增加了日志输出。那是不是说还是有“关闭终端会导致程序终止”这个弊端呢,答案是否,使用这个命令关闭终端(无论是启动时还是启动完毕)都不会终止程序(原因是因为关闭终端这里其实关闭的是nohup的命令层级,对java程序已经起不到影响,linux肯定对nohup命令做了特殊处理)。

所以说以上所有的弊端,这个命令已经没有了,启动程序使用这个命令也是完全没有问题的。

弊端1:日志定向输出当前文件夹下的nohup.out(与下面几个命令相比,姑且算是弊端吧)

5.nohup java -jar test.jar > ./info.log &

# 例子
nohup java -jar test.jar >  ./info.log &

该命令没有弊端,与上一个场景的区别是会将日志打印到指定的info.log下面。不过打印方式是覆盖。也就是说每次启动以后,都会将之前的日志覆盖

6. nohup java -jar test.jar >> ./info.log &

# 例子
nohup java -jar test.jar >>  ./info.log &

该命令没有弊端,与上一个场景的区别是会将日志打印到指定的info.log下面。不过打印方式是拼接。也就是说每次启动以后,都会将本次的日志拼接到原日志之后进行输出,这里日志因为是控制台日志,一般没必要拼接

7. nohup java -jar test.jar >> /dev/null &

# 例子
nohup java -jar test.jar >> /dev/null &

这个命令是将日志输出到/dev/null,/dev/null是linux系统里的黑洞,其实可以理解为垃圾桶,相当于把日志扔了不要了,其他就没什么区别了。
【这几个命令就不重复测试了】

二、总结

常用的命令其实就三个,根据需要选择即可

# 需要打印控制台日志,无需保留之前的日志信息
nohup java -jar test.jar >  ./info.log &
# 需要打印控制台日志,需要保留之前的日志信息
nohup java -jar test.jar >>  ./info.log &
# 不需要打印控制台日志
nohup java -jar test.jar >> /dev/null &

到此这篇关于jar包的各种启动方式超详细总结的文章就介绍到这了,更多相关jar包启动方式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯