You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Oracle Cloud上的Spring Boot服务在关闭Windows PowerShell后持续运行

让Spring Boot服务在关闭PowerShell后持续运行的方法

问题出在你通过PowerShell远程启动的Spring Boot进程属于当前会话的前台进程,关闭PowerShell时会话终止,进程也会被杀死。以下是几种实用的解决办法:

方法1:使用nohup后台启动

直接在启动命令前加上nohup,并将输出重定向到日志文件,让进程脱离当前会话:

nohup java -jar your-spring-boot-app.jar > app.log 2>&1 &
  • nohup:让进程忽略挂起信号,会话结束后仍能继续运行
  • > app.log 2>&1:将标准输出和错误输出都写入app.log,方便后续排查问题
  • &:让进程在后台运行

关闭PowerShell后,服务会继续在OCI实例后台运行。想要查看日志可以用tail -f app.log命令实时追踪。

方法2:使用screen创建持久会话

如果需要后续重新连接到进程控制台,可使用screen:

  1. 先安装screen(未安装的话):
sudo dnf install screen
  1. 创建新的screen会话:
screen -S spring-session
  1. 在该会话内启动Spring Boot服务:
java -jar your-spring-boot-app.jar
  1. 按下Ctrl+A再按D,脱离当前会话,此时关闭PowerShell不会影响进程
  2. 后续重新连接会话可使用:
screen -r spring-session

方法3:配置systemd服务(推荐,最稳定)

将Spring Boot服务注册为systemd系统服务,可实现开机自启,且完全不受会话影响,是生产环境的首选方案:

  1. 创建systemd服务配置文件,比如/etc/systemd/system/spring-app.service:
sudo nano /etc/systemd/system/spring-app.service
  1. 写入以下内容(根据实际路径修改):
[Unit]
Description=My Spring Boot Application
After=network.target

[Service]
User=your-username
WorkingDirectory=/path/to/your/app/directory
ExecStart=/usr/bin/java -jar your-spring-boot-app.jar
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
  • User:设置运行服务的用户(即你登录OCI实例的用户名)
  • WorkingDirectory:Spring Boot jar文件所在的目录
  • ExecStart:完整的启动命令路径(可用which java查看java的实际路径)
  • Restart=always:服务意外停止时自动重启
  1. 保存并退出nano(按Ctrl+O回车,再按Ctrl+X)
  2. 重新加载systemd配置:
sudo systemctl daemon-reload
  1. 启动服务:
sudo systemctl start spring-app
  1. 设置开机自启:
sudo systemctl enable spring-app
  1. 查看服务状态:
sudo systemctl status spring-app

这种方式下,即使OCI实例重启,服务也会自动启动,完全不受PowerShell会话的影响。

内容的提问来源于stack exchange,提问作者Luthfi Fitra Musyaffa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:55:13