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

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

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

使用 `nohup` 命令

linux 后台运行 jar

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 文件中。

linux 后台运行 jar

2. 使用screentmux 会话

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

使用screen

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

   screen -S mysession

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

   java -jar myapp.jar

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

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

linux 后台运行 jar
   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 命令简单快捷,适合临时任务;screentmux 提供了更灵活的会话管理功能,适合需要频繁交互的任务;而systemd 则适用于需要长期稳定运行的服务,根据具体需求选择合适的方法,可以确保Java应用在Linux系统上的高效运行。

FAQs

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

A1: 如果使用nohupscreentmux 启动的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 文件中,或者你指定的日志文件中,如果使用screentmux,可以在重新连接到会话后查看输出,如果使用systemd,日志文件路径在服务单元文件中指定,例如/var/log/myapp.log

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

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1320769.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-11-16 03:41
下一篇 2024-11-16 03:41

相关推荐

  • 如何在Linux系统中执行清屏操作?

    在Linux中,可以使用命令clear来清屏。

    2024-11-16
    06
  • Linux中如何理解和使用IP地址与端口?

    在Linux中查看IP地址和端口信息,可以使用以下命令:,,1. **查看IP地址**:ifconfig或ip addr show。,,2. **查看所有监听的TCP和UDP端口**:netstat -tuln或ss -tuln。,,3. **查看特定端口的占用情况**:lsof -i :端口号或fuser 端口号/tcp。

    2024-11-16
    011
  • 如何在Linux中提取字符?

    在 Linux 中,可以使用多种方法提取字符串中的字符。使用 cut、awk 或 sed 等命令行工具。以下是一些示例:,,1. 使用 cut 提取第2个字符:, “bash, echo “hello” | cut -c2, `,,2. 使用 awk 提取第3个字符:, `bash, echo “world” | awk ‘{print substr($0,3,1)}’, `,,3. 使用 sed 提取第4个字符:, `bash, echo “example” | sed ‘s/^\(…\)./\1/’, “,,这些命令可以帮助你根据需要提取特定位置的字符。

    2024-11-16
    06
  • Linux中如何定义和使用局部变量?

    在 Linux 系统中,局部变量是在 shell 脚本或函数内部定义的变量。它们只在定义它们的范围内有效,无法在脚本的其他部分访问。局部变量通常用于存储临时数据,如循环计数器、条件标志等。

    2024-11-16
    011

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入