Java Jar 启动时的 nohup 日志地址
在使用 Java 开发应用程序时,我们经常会将程序打包成可执行的 JAR 文件,然后使用 java -jar
命令来运行它。但是,如果我们希望在后台运行这个 JAR 文件,并且希望能够让它在后台运行时记录日志,我们可以使用 nohup
命令来实现。
什么是 nohup?
nohup
是一个 Unix/Linux 命令,用于在后台运行一个命令,而不受当前会话的影响。它的完整形式是 "nohup" 命令的简称,其中 "nohup" 是 "no hang-up" 的缩写,意思是在用户退出登录或终端关闭时,命令仍然可以继续运行。
使用 nohup
命令运行程序时,会自动将程序的输出重定向到一个文件中,这样我们就可以在后台运行程序的同时查看日志。
启动 Java JAR 文件时使用 nohup
要在启动 Java JAR 文件时使用 nohup
,我们可以将 java -jar
命令与 nohup
命令结合使用。下面是一个示例命令:
nohup java -jar myapp.jar > myapp.log 2>&1 &
在这个命令中,我们使用 nohup
命令来运行 java -jar myapp.jar
。>
符号用于将命令的输出重定向到 myapp.log
文件,2>&1
则是将标准错误输出重定向到标准输出。最后的 &
符号表示将命令放到后台运行。
这样,我们就可以在后台运行 JAR 文件,并将日志输出到指定的文件中。
示例代码
下面是一个示例的 Java 代码,用于模拟一个简单的应用程序。我们将使用 Maven 来构建这个项目,并将其打包成一个可执行的 JAR 文件。
public class MyApp {
public static void main(String[] args) {
System.out.println("Hello World!");
// 模拟程序运行
for (int i = 0; i < 10; i++) {
System.out.println("Processing: " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Finished!");
}
}
在这个示例中,我们的应用程序简单地输出 "Hello World!",然后模拟运行一段时间,最后输出 "Finished!"。
为了将这个程序打包成可执行的 JAR 文件,我们需要在项目的根目录下创建一个 pom.xml
文件,并添加以下内容:
<project xmlns="
xmlns:xsi="
xsi:schemaLocation="
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>myapp</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.example.MyApp</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
然后,我们可以使用以下命令来构建项目并打包成 JAR 文件:
mvn clean package
这将在项目的 target
目录下生成一个名为 `myapp-1.0-SNAPSHOT-jar-with-dependencies.jar