Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Springboot项目使用java -jar 启动jar包参数详解

Springboot项目使用java -jar 启动jar包参数详解

原创
作者头像
IT工作者
发布于 2022-05-17 09:55:13
发布于 2022-05-17 09:55:13
5.8K0
举报
文章被收录于专栏:程序技术知识程序技术知识

命令实例:

nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &

说明:

–spring.profiles.active=daily, 这个可以在spring-boot启动中指定系统变量,多环境(测试、预发、线上配置)的区分

在排查jar包冲突时,可以指定启动的-verbose:class 打印出启动的应用实际加载类的路径,来排查来源。

jvm堆设值: -Xms500m -Xmx500m -Xmn250m -Xss256k

nohup 不挂断地运行命令;& 在后台运行 ,一般两个一起用。 eg:nohup command &

-server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存。

-XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照

可以用 java -X命令在终端查询所有的java堆参数:

-Xmixed 混合模式执行 (默认)

-Xint 仅解释模式执行

-Xbootclasspath:<用 : 分隔的目录和 zip/jar 文件>

设置搜索路径以引导类和资源

-Xbootclasspath/a:<用 : 分隔的目录和 zip/jar 文件>

附加在引导类路径末尾

-Xbootclasspath/p:<用 : 分隔的目录和 zip/jar 文件>

置于引导类路径之前

-Xdiag 显示附加诊断消息

-Xnoclassgc 禁用类垃圾收集

-Xincgc 启用增量垃圾收集

-Xloggc: 将 GC 状态记录在文件中 (带时间戳)

-Xbatch 禁用后台编译

-Xms 设置初始 Java 堆大小

-Xmx 设置最大 Java 堆大小

-Xss 设置 Java 线程堆栈大小

-Xprof 输出 cpu 配置文件数据

-Xfuture 启用最严格的检查, 预期将来的默认值

-Xrs 减少 Java/VM 对操作系统信号的使用 (请参阅文档)

-Xcheck:jni 对 JNI 函数执行其他检查

-Xshare:off 不尝试使用共享类数据

-Xshare:auto 在可能的情况下使用共享类数据 (默认)

-Xshare:on 要求使用共享类数据, 否则将失败。

-XshowSettings 显示所有设置并继续

-XshowSettings:all

显示所有设置并继续

-XshowSettings:vm 显示所有与 vm 相关的设置并继续

-XshowSettings:properties

显示所有属性设置并继续

-XshowSettings:locale

显示所有与区域设置相关的设置并继续

-X 选项是非标准选项, 如有更改, 恕不另行通知。

以下选项为 Mac OS X 特定的选项:

-XstartOnFirstThread

在第一个 (AppKit) 线程上运行 main() 方法

-Xdock:name=<应用程序名称>"

覆盖停靠栏中显示的默认应用程序名称

-Xdock:icon=<图标文件的路径>

覆盖停靠栏中显示的默认图标

-server和-client具体说明:

-server:一定要作为第一个参数,在多个 CPU 时性能佳,还有一种叫 -client 的模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或开发调试,在 32 位环境下直接运行 Java 程序默认启用该模式。Server 模式的特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境,在具有 64 位能力的 JDK 环境下默认启用该模式,可以不配置该参数。

-XX:+HeapDumpOnOutOfMemoryError:

该配置会把快照保存在user.dir中,比如你用tomcat启动,那应该是在tomcat的bin目录下

当然,也可以通过XX:HeapDumpPath=./java_pid.hprof来显示指定路径

此外,OnOutOfMemoryError参数允许用户指定当出现oom时,指定某个脚本来完成一些动作,比如邮件知会。。。

$ java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -XX:OnOutOfMemoryError =“sh ~/cleanup.sh” MyApp

其他补充说明:

shell命令重定向绑定:

nohup command >/dev/null 2>&1 &

/dev/null 2>&1。这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。

/dev/null

这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

2>&1

这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。

linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

/dev/null 2>&1 VS 2>&1 >/dev/null

乍眼看这两条命令貌似是等同的,但其实大为不同。刚才提到了,linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令。那么我们同样从左到右地来分析2>&1 >/dev/null:

2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。

/dev/null,将标准输出1重定向到/dev/null中。

我们用一个表格来更好地说明这两条命令的区别:

命令 标准输出 错误输出

/dev/null 2>&1 丢弃 丢弃

2>&1 >/dev/null 丢弃 屏幕

/dev/null 2>&1 VS >/dev/null 2>/dev/null

那么可能会有些同学会疑问,为什么要用重定向绑定,而不是像>/dev/null 2>/dev/null这样子重复一遍呢。

为了回答这个问题,我们回到刚才介绍输出重定向的场景。我们尝试将标准输出和错误输出都定向到out文件中:

#ls a.txt b.txt >out 2>out

#cat out

a.txt

法访问b.txt: 没有那个文件或目录

WTF?竟然出现了乱码,这是为啥呢?这是因为采用这种写法,标准输出和错误输出会抢占往out文件的管道,所以可能会导致输出内容的时候出现缺失、覆盖等情况。现在是出现了乱码,有时候也有可能出现只有error信息或者只有正常信息的情况。不管怎么说,采用这种写法,最后的情况是无法预估的。

而且,由于out文件被打开了两次,两个文件描述符会抢占性的往文件中输出内容,所以整体IO效率不如>/dev/null 2>&1来得高。

nohup结合

1.nohup

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2.&

用途:在后台运行

一般两个一起用

我们经常使用nohup command &命令形式来启动一些后台程序,比如一些java服务:

#nohup java -jar xxxx.jar &

为了不让一些执行信息输出到前台(控制台),我们还会加上刚才提到的>/dev/null 2>&1命令来丢弃所有的输出:

#nohup java -jar xxxx.jar >/dev/null 2>&1 &

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux系统:第十一章:常用命令
whereis搜索redis服务执行文件:whereis redis-server
Java廖志伟
2021/02/02
8420
Linux系统:第十一章:常用命令
nohup基本使用
兮动人
2024/02/07
4890
全网最全Linux 运行jar包的几种方式[通俗易懂]
最常用的启动jar包命令,特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
全栈程序员站长
2022/11/10
5.9K0
全网最全Linux 运行jar包的几种方式[通俗易懂]
Frp命令大全
说明: 其中,>为输出重定向符号,>/dev/null 2>&1。这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。 1. >/dev/null 这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。 2. 2>&1 这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。 linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。
Dabenshi
2023/05/26
2K0
【Java专题_09】生产环境Jvm参数设置
最近公司有个独立的小模块是我这边负责开发上线,涉及到jvm参数调整方面,主要是根据服务器的配置4C16G配置了以下的参数,程序单纯只是接口查询redis以及信息上报,数据量大概是每天3000万!
夏之以寒
2024/03/04
2310
Shell高级用法之重定向绑定
好了,在有了以上知识的基础上,我们再来看开头提到的>/dev/null 2>&1。这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。
院长技术
2020/09/09
1K0
linux 后台运行进程:& , nohup
当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。
DevOps在路上
2023/05/16
5K0
linux 后台运行进程:& , nohup
shell脚本 >/dev/null 2>&1
1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
week
2018/08/27
4570
想让进程后台运行,试试Linux的nohup命令,3分钟学会。
来源 | https://dablelv.blog.csdn.net/article/details/79985071
吾非同
2021/07/12
6K0
Linux 里的 2>&1 究竟是什么
我们在Linux下经常会碰到nohup command>/dev/null 2>&1 &这样形式的命令。首先我们把这条命令大概分解下:
10JQKA
2019/10/23
7.1K1
部署jar项目服务命令
查看 ps aux | grep 服务关键字 关闭进程,否则启动的时候报错:java.net.BindException: Address already in use kill -9 12148 重启服务 nohup java -jar 微服务.jar &
oktokeep
2024/10/09
920
nohup command > out.file 2>&1 & 命令详解
hup是hang up的缩写,是挂断、挂起的意思,而顾名思义,nohup就是不挂断、不挂起的意思。在 Unix 的早期版本中,每个终端都会通过modem和系统通讯。当用户 logout 时,modem就会挂断(hang up)。并且,当modem和系统断开连接时,就会给系统发送hangup信号来通知其关闭该终端打开的所有进程。 而nohup命令的用途就是让该终端提交的命令忽略该hangup信号,从而能够在系统中继续执行。
saintyyu
2021/11/22
3.3K0
linux nohup.out文件过大解决方法
在一般使用时,默认的是标准输出,即1.当我们需要特殊用途时,可以使用其他标号。例如,将某个程序的错误信息输出到log文件中:./program 2>log。这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。 另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。 Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。
似水的流年
2021/10/12
5.8K0
linux16-编程3-程序后台执行指西
比如,有时候,我们把程序放在后台了,希望其输出也进行保存,而不是混乱而无序的输出到前台,我们就可以使用重定向。
北野茶缸子
2022/05/19
6900
linux16-编程3-程序后台执行指西
java后台运行的代码与详细解释
一写代码就开心
2023/07/24
3720
FRP内网穿透教程「建议收藏」
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
全栈程序员站长
2022/09/30
1.1K0
FRP内网穿透教程「建议收藏」
linux下的java部署
注:在运行 JAR 包之前,确保你的 JAR 文件是可执行的,并且包含了正确的类和依赖项。如果 JAR 包依赖于其他库或配置文件,确保它们也在正确的位置可用。
Kiba518
2024/03/06
2250
linux下的java部署
Linux 常用命令
这条命令的作用是将标准输出1重定向到/dev/null中。 /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。
茶半香初
2021/11/26
4140
Linux 常用命令
Linux编辑启动停止重启springboot jar包脚本
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null" 2 表示stderr标准错误
陈灬大灬海
2019/03/21
4.8K0
Linux编辑启动停止重启springboot jar包脚本
Linux 运行jar包命令[通俗易懂]
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
全栈程序员站长
2022/11/15
7.1K0
相关推荐
Linux系统:第十一章:常用命令
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档