完整命令及解释如下:
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 是什么?感觉没用呀?
--type=jack 是命令行参数中的一个选项,这个命令启动的 Java 程序中自定义的参数之一。这个选项可能在程序中被使用,也可能是没有用到的。如果程序中没有使用这个选项,则可以不传入这个参数。
通常情况下,我们会为程序传入一些自定义参数,这些参数可以用于在程序运行时做出不同的行为或配置。--spring.profiles.active=onlineTest 是一个常用的选项,用于设置程序运行的 Spring Profile,而 --type=jack 则是程序中自定义的一个选项。
自定义的一个选项,在程序中如何使用?
自定义的命令行选项可以在 Java 程序中通过命令行参数解析库来解析。常用的 Java 命令行参数解析库有 Apache Commons CLI、JCommander 等。
举个例子,在使用 Apache Commons CLI 的情况下,可以在 Java 程序中通过以下代码来解析命令行选项:
commons-cli commons-cli1.2 import org.apache.commons.cli.*;public class MyApp { public static void main(String[] args) { Options options = new Options(); options.addOption("t", "type", true, "program type"); CommandLineParser parser = new DefaultParser(); try { CommandLine cmd = parser.parse(options, args); if (cmd.hasOption("t")) { String type = cmd.getOptionValue("t"); System.out.println("Program type: " + type); } } catch (ParseException e) { System.err.println("Error: " + e.getMessage()); } }}在上面的代码中,我们定义了一个 type 选项,然后通过 Apache Commons CLI 解析命令行参数,并获取 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=onlineTestroot 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 字符串的进程