完整命令及解释如下:
nohup java -Xms512m -Xmx1024m -jar /jack/cloudmes/jar/njp-plus-empty-admin-api.jar --spring.profiles.active=onlineTest --type=jack > /jack/cloudmes/jar/out.file 2>&1 &
- nohup:不挂断地运行命令,即使终端关闭,命令也会一直运行。这个命令常用于长时间运行的任务,如后台服务程序等。
- java:Java 程序执行命令。
- -Xms512m:设置 JVM 初始分配的堆内存大小为 512MB。
- -Xmx1024m:设置 JVM 最大可用的堆内存大小为 1024MB。
- -jar:表示运行一个 jar 文件。
- /jack/cloudmes/jar/njp-plus-empty-admin-api.jar:要运行的 jar 文件的路径。
- --spring.profiles.active=onlineTest:设置 Spring Boot 运行时的 profile 为 onlineTest。
- --type=jack:设置程序运行类型为 jack。
- > /jack/cloudmes/jar/out.file:将程序的标准输出(STDOUT)重定向到 /jack/cloudmes/jar/out.file 文件中。其中,">" 表示覆盖写入,如果想要追加写入可以使用 ">>"。
- 2>&1:将程序的标准错误输出(STDERR)重定向到标准输出中,使得标准输出和标准错误都被写入到 /jack/cloudmes/jar/out.file 文件中。
- &:将命令放入后台运行。
如何根据-Xms和-Xmx设置堆内存大小?
在 Java 应用程序中,-Xms 和 -Xmx 选项用于设置 Java 虚拟机(JVM)的初始堆大小和最大堆大小。
-Xms 选项设置 JVM 的初始堆大小。默认情况下,JVM 的初始堆大小为物理内存的 1/64。例如,如果物理内存为 8 GB,则 JVM 的初始堆大小为 128 MB。使用 -Xms 选项可以显式设置 JVM 的初始堆大小。例如,要将 JVM 的初始堆大小设置为 512 MB,可以使用以下命令:
java -Xms512m MyApp
-Xmx 选项设置 JVM 的最大堆大小。默认情况下,JVM 的最大堆大小为物理内存的 1/4。使用 -Xmx 选项可以显式设置 JVM 的最大堆大小。例如,要将 JVM 的最大堆大小设置为 1024 MB,可以使用以下命令:
java -Xmx1024m MyApp
需要注意的是,JVM 的最大堆大小不能超过系统内存大小。
-Xms 和 -Xmx 这两个选项可以影响 JVM 的性能和稳定性。
需要注意以下几点:
-Xms 和 -Xmx 选项必须使用相同的单位,通常是m(MB)或g(GB)。
初始堆大小不应该小于最小堆大小,最大堆大小不应该大于系统可用内存。
如果设置的初始堆大小和最大堆大小相同,则 JVM 只会在启动时分配一块内存,这可能导致程序运行时发生内存分配错误。因此,通常应将初始堆大小设置为最小堆大小,将最大堆大小设置为预计使用内存的两倍。
过大的堆大小可能会导致长时间的垃圾回收,从而导致性能下降。因此,应该根据应用程序的需求来调整堆大小,以实现最佳性能和稳定性。
在设置 JVM 堆大小时,还应考虑其他因素,例如应用程序的并发访问量、线程数和所需的堆外内存大小等。
如何查看linux物理内存大小?
在 Linux 中,可以使用
free
命令来查看系统的物理内存大小和使用情况。free -h
查询结果如下:
查询结果中的swap是什么?
在 Linux 中,swap 是虚拟内存(swap space)的意思,是在运行内存(RAM)不足时用作备用的一部分磁盘空间。如果系统中的运行内存用尽了,而又有新的进程需要使用内存,就会将某些不经常使用的数据移到 swap 空间中,以便腾出运行内存供新的进程使用。因此,如果系统中的 swap 空间过小,就会影响系统的性能和稳定性。
--type=jack 是什么?
通常情况下,我们会为程序传入一些自定义参数,这些参数可以用于在程序运行时做出不同的行为或配置。
--spring.profiles.active=onlineTest
是一个常用的选项,用于指定程序运行的配置文件,而--type=jack
则是程序中自定义的一个选项。
个人大白话理解:--type=jack
作用是运行java程序时,在JVM中定义一个变量type和值jack。java应用程序运行时,可以获取到这个变量的值(具体怎么获取无非就是通过一些api等),如果应用程序是springboot项目,yml配置文件中可以用过 ${type} 获取变量值。这个选项可能在程序中被使用,也可能是没有用到,不影响程序运行。
详解 > /jack/cloudmes/jar/out.file 2>&1 &这段命令
这段命令是用来将命令的输出重定向到文件并使命令在后台运行的。具体解释如下:
> 符号用于将命令的输出重定向到文件
/jack/cloudmes/jar/out.file
,如果该文件不存在,则会创建该文件。例如,命令ls > out.txt
将把ls
命令的输出写入到文件out.txt
中。
2>&1
符号将标准错误输出(标准错误流)重定向到标准输出(标准输出流),也就是将错误信息输出到与正常输出相同的地方。例如,命令ls -l badfile 2>&1
将把标准错误输出写入到标准输出中,这样就可以在同一个文件或终端中看到所有的输出。
&
符号用于将命令放到后台运行,这样就可以在命令执行的同时进行其他操作了。例如,命令nohup sleep 10 > out.txt 2>&1 &
将在后台运行一个sleep
命令,并将其输出重定向到文件out.txt
中。综上所述,这段命令的作用是将
java
命令在后台运行,并将其输出重定向到文件/jack/cloudmes/jar/out.file
中。2>&1
保证标准错误信息和标准输出信息都会被重定向到文件中。
成功运行命令后,如何查询应用的进程id?
使用命令:
ps -ef| grep xxl-job-executor-2.4.1-SNAPSHOT.jar
查询结果:
root 27318 1 1 09:13 pts/12 00:00:15 java -Xms512m -Xmx1024m -jar /jack/cloudmes/job/xxl-job-executor-2.4.1-SNAPSHOT.jar --spring.profiles.active=onlineTest root 28583 28532 0 09:36 pts/14 00:00:00 grep --color=auto xxl-job-executor-2.4.1-SNAPSHOT.jar
查询结果中第二行进程是什么?带 --color字样
该进程就是查询命令本身。是一个
grep
命令的进程,用于查找包含xxl-job-executor-2.4.1-SNAPSHOT.jar
字符串的进程