linux部署jar包 后台运行
时间: 2023-12-29 07:26:12 浏览: 167
在Linux上部署并后台运行一个jar包,你可以使用以下步骤:
1. 确保你已经安装了Java运行环境(JRE)或者Java开发工具包(JDK)。
2. 将你的jar包上传到Linux服务器上的一个目录中,例如`/opt/myapp`。
3. 创建一个启动脚本,例如`start.sh`,并将以下内容添加到脚本中:
```shell
#!/bin/bash
nohup /usr/local/jdk1.8.0_291/bin/java -jar /opt/myapp/demo.jar > /dev/null 2>&1 &
```
这个脚本使用`nohup`命令在后台运行Java命令,并将输出重定向到`/dev/null`以忽略输出。
4. 保存并退出脚本文件后,给脚本文件添加执行权限:
```shell
chmod +x start.sh
```
5. 使用以下命令运行启动脚本,启动你的应用程序:
```shell
./start.sh
```
现在,你的jar包应该已经在后台运行了。你可以使用以下命令检查它的运行状态:
```shell
ps -ef | grep java
```
如果你想停止应用程序,可以使用以下命令找到进程ID(PID)并杀死进程:
```shell
kill <PID>
```
相关问题
linux中jar包后台运行
### 实现Java JAR文件作为守护进程在Linux后台执行
为了确保Java应用程序能够在Linux环境中作为一个持久性的守护进程运行,可以采用多种方法来实现这一目标。一种常见的方式是利用`nohup`命令配合重定向操作符以及`&`符号将应用放入后台长期稳定工作[^4]。
具体来说,在终端输入如下指令可达成目的:
```bash
nohup java -jar YourApplication.jar > app_output.log 2>&1 &
```
上述命令中的各个部分含义分别为:
- `nohup`: 即使用户退出登录也不会中断正在运行的应用;
- `java -jar YourApplication.jar`: 执行指定的JAR包;
- `> app_output.log`: 将标准输出流导向至名为`app_output.log`的日志文件中保存;
- `2>&1`: 表示错误信息同样会被记录到同一日志文件里;
- `&`: 让整个过程以后台模式启动,从而不影响其他任务的操作;
此外,还可以编写Bash脚本用于更灵活地管理和控制服务状态,比如设置环境变量、定义更多复杂的逻辑等[^1]。对于Spring Boot这类自带嵌入式服务器框架构建的应用而言,这种方法尤为适用,因为它们可以直接被打包成独立的可执行单元——JAR文件,并通过简单的命令完成部署和运维需求[^3]。
当涉及到更加复杂的服务管理时,则建议考虑使用诸如Systemd这样的现代初始化系统和服务管理器来进行配置,这能提供更为强大稳定的守护功能和支持特性。
#### 示例:创建一个简单的Bash脚本来启动Java应用
下面是一个简单例子展示如何创建一个shell脚本来简化这个流程:
```bash
#!/bin/bash
# 设置必要的路径和其他参数
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
cd /path/to/your/app/
# 启动Java应用并将输出写入特定位置
nohup $JAVA_HOME/bin/java -jar your-app-name.jar >> /var/log/myapp.log 2>&1 &
echo "Started the application."
```
此脚本首先设置了所需的环境变量(如`JAVA_HOME`),切换到了包含JAR文件的工作目录,最后调用了带有适当选项的`nohup`命令来启动该程序并将其输出重定向给定的日志文件。
linux启动jar包后台运行
### 如何在 Linux 中以守护进程方式启动 JAR 文件
为了使 Java 应用程序作为守护进程运行,可以采用多种方法来确保其稳定性和后台执行能力。以下是几种常见的方式:
#### 使用 nohup 和 & 符号
通过 `nohup` 命令配合重定向操作符以及 `&` 可让应用程序忽略挂起信号并将其置于后台运行。
```bash
nohup java -jar your-application.jar > output.log 2>&1 &
```
这会创建一个新的子 shell 来执行命令,并且即使关闭终端窗口也不会影响该进程的继续工作[^1]。
#### 利用 screen 工具
Screen 是一个多路复用器工具,允许在一个单独的控制台下管理多个虚拟终端。对于希望保持交互性的场景非常有用。
```bash
screen -S myappsession
java -jar your-application.jar
Ctrl+A D # Detach from session without stopping application.
```
这种方式可以在不终止应用的情况下断开连接,并随时重新附着到已有的会话上查看日志或状态。
#### 创建 systemd service 单元文件
现代 Linux 发行版通常推荐使用 Systemd 来管理系统服务。编写一个简单的 .service 文件定义如何启动、停止和重启 Java 应用程序。
编辑 `/etc/systemd/system/myapplication.service`:
```ini
[Unit]
Description=My Application Service
After=syslog.target network.target
[Service]
User=nobody
ExecStart=/usr/bin/java -jar /path/to/your-application.jar
SuccessExitStatus=143
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
保存更改后加载新配置并启用服务以便开机自启:
```bash
sudo systemctl daemon-reload
sudo systemctl enable myapplication.service
sudo systemctl start myapplication.service
```
这种方法提供了更强大的管理和监控功能,适合生产环境部署。
阅读全文
相关推荐


















