nohup java -jar app.jar 和java -jar app.jar区别
时间: 2023-09-02 18:10:19 浏览: 385
`nohup java -jar app.jar` 和 `java -jar app.jar` 是两条命令的不同用法。
`java -jar app.jar` 是在终端中直接运行 `app.jar` 的命令。这将启动一个 Java 应用程序,并将 `app.jar` 文件作为参数传递给 Java 虚拟机(JVM)来执行。
`nohup java -jar app.jar` 则是使用了 `nohup` 命令来运行 Java 应用程序。`nohup` 命令的作用是在后台运行一个命令,并且不受终端关闭或退出的影响。这意味着即使你关闭终端,Java 应用程序仍然会继续在后台运行。
所以,主要的区别在于 `nohup` 命令能够使 Java 应用程序在后台运行,而不受终端关闭的影响。
相关问题
为什么jenkins构建选上Exec in pty就不执行以下脚本了:#!/bin/bash PID=$(ps -ef | grep auth-server.jar | grep -v grep | awk '{print $2}') if [[ -z $PID ]]; then echo "auth-server.jar is not running." nohup java -jar -Xms512m -Xmx512m -Dspring.profiles.active=test -jar /opt/app/auth-server/auth-server.jar & echo "auth-server.jar Starting" else echo "auth-server.jar is running with PID $PID. Killing the process..." ps -ef | grep auth-server.jar | grep -v grep | awk '{print $2}' | xargs kill -9 echo "Process has been killed." nohup java -jar -Xms512m -Xmx512m -Dspring.profiles.active=test -jar /opt/app/auth-server/auth-server.jar & echo "auth-server.jar Starting" fi
可能是因为Exec in pty选项会开启一个伪终端,而脚本中的nohup命令会将命令放入后台运行,导致无法在伪终端中输出结果。建议将脚本中的nohup命令去掉,直接在前台运行java命令,并将输出重定向到日志文件中,这样可以在jenkins的控制台输出日志。同时,为了避免权限问题,建议将java命令和相关文件的路径设置为绝对路径。另外,建议在脚本中添加一些错误处理逻辑,如检查java命令是否存在等。
nohup java -Xms1024m -Xmx1024m -jar /home/xiaoyun-app/cloud-back/common.jar >/home/xiaoyun-app/cloud-back/logs/common.out &
这是一个 Linux 命令,它的作用是在后台启动一个 Java 应用程序。具体解释如下:
- nohup:表示忽略 SIGHUP 信号,即不挂断连接,命令行退出后程序仍然可以继续运行。
- java:表示要启动的是 Java 程序。
- -Xms1024m:表示 JVM 最小分配的堆内存为 1024MB。
- -Xmx1024m:表示 JVM 最大分配的堆内存为 1024MB。
- -jar /home/xiaoyun-app/cloud-back/common.jar:表示要启动的 Java 应用程序的 jar 包路径。
- >/home/xiaoyun-app/cloud-back/logs/common.out:表示将程序的标准输出重定向到指定的文件。
- &:表示在后台运行该命令。
这个命令的意思是启动一个 Java 应用程序,最小堆内存为 1024MB,最大堆内存为 1024MB,程序的标准输出被重定向到 /home/xiaoyun-app/cloud-back/logs/common.out 文件,命令行退出后程序仍然可以继续在后台运行。
阅读全文