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