nohup java -jar yourfile.jar &
。在Linux系统中,运行Java程序通常涉及执行JAR文件,直接在命令行中运行JAR文件会使得程序在前台运行,这意味着当您关闭终端窗口或断开SSH连接时,程序也会终止,为了避免这种情况,我们可以将JAR文件在后台运行,本文将详细介绍如何在Linux后台运行JAR文件的方法及其相关注意事项。
使用 `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”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!