当前位置:首页 > 行业动态 > 正文

如何在Linux中实现JAR文件的后台运行?

在 Linux 中,可以使用以下命令将 jar 文件在后台运行: nohup java -jar yourfile.jar &。

在Linux系统中,运行Java程序通常涉及执行JAR文件,直接在命令行中运行JAR文件会使得程序在前台运行,这意味着当您关闭终端窗口或断开SSH连接时,程序也会终止,为了避免这种情况,我们可以将JAR文件在后台运行,本文将详细介绍如何在Linux后台运行JAR文件的方法及其相关注意事项。

如何在Linux中实现JAR文件的后台运行?  第1张

使用 `nohup` 命令

nohup("no hang up"的缩写)是一个常用的命令,用于在用户注销后继续运行进程,通过结合& 符号,可以将JAR文件放在后台运行。

语法:

nohup java -jar your-application.jar &

示例:

假设有一个名为myapp.jar 的JAR文件,可以使用以下命令在后台运行:

nohup java -jar myapp.jar &

输出重定向:

默认情况下,nohup 会将标准输出和标准错误输出重定向到nohup.out 文件中,如果需要将这些输出重定向到其他文件,可以这样做:

nohup java -jar myapp.jar > myapp.log 2>&1 &

这将把标准输出和标准错误都重定向到myapp.log 文件中。

2. 使用screen 或tmux 会话

screen 和tmux 是两个流行的终端多路复用器,允许用户在一个终端会话中创建多个独立的会话,并在这些会话之间切换。

使用screen:

1、启动一个新的screen 会话:

 screen -S mysession

2、在新的screen 会话中运行JAR文件:

 java -jar myapp.jar

3、按Ctrl+A 然后按D 键,将screen 会话分离,使其在后台运行。

4、要重新连接到该screen 会话,可以使用:

 screen -r mysession

使用tmux:

1、启动一个新的tmux 会话:

 tmux new -s mysession

2、在新的tmux 会话中运行JAR文件:

 java -jar myapp.jar

3、按Ctrl+B 然后按D 键,将tmux 会话分离,使其在后台运行。

4、要重新连接到该tmux 会话,可以使用:

 tmux attach-session -t mysession

使用 `systemd` 服务

对于长期运行的服务,使用systemd 是一种更为专业和可靠的方法,可以通过创建一个自定义的systemd 服务单元文件来管理JAR文件的后台运行。

步骤:

1、创建一个服务单元文件,例如/etc/systemd/system/myapp.service:

 [Unit]
   Description=My Java Application
   After=network.target
   [Service]
   Type=simple
   User=yourusername
   ExecStart=/usr/bin/java -jar /path/to/myapp.jar
   StandardOutput=file:/var/log/myapp.log
   StandardError=file:/var/log/myapp.err.log
   Restart=always
   [Install]
   WantedBy=multi-user.target

2、重新加载systemd 配置:

 sudo systemctl daemon-reload

3、启动并启用服务:

 sudo systemctl start myapp.service
   sudo systemctl enable myapp.service

4、检查服务状态:

 sudo systemctl status myapp.service

在Linux系统中,将JAR文件在后台运行有多种方法,每种方法都有其适用的场景,使用nohup 命令简单快捷,适合临时任务;screen 和tmux 提供了更灵活的会话管理功能,适合需要频繁交互的任务;而systemd 则适用于需要长期稳定运行的服务,根据具体需求选择合适的方法,可以确保Java应用在Linux系统上的高效运行。

FAQs

Q1: 如何停止一个在后台运行的JAR文件?

A1: 如果使用nohup、screen 或tmux 启动的JAR文件,首先找到对应的进程ID(PID),然后使用kill 命令终止进程。

ps aux | grep java
kill -9 <PID>

如果是通过systemd 管理的JAR文件,可以使用systemctl stop 命令:

sudo systemctl stop myapp.service

Q2: 如何查看后台运行的JAR文件的日志?

A2: 如果使用nohup,日志默认存储在nohup.out 文件中,或者你指定的日志文件中,如果使用screen 或tmux,可以在重新连接到会话后查看输出,如果使用systemd,日志文件路径在服务单元文件中指定,例如/var/log/myapp.log。

以上就是关于“linux 后台运行 jar”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

0