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

SSH远程执行含nohup的bash脚本时Java进程启动后短时间退出问题

SSH远程执行nohup启动的Spring Boot进程短时间退出问题

场景复现

  • 存在权限为755的启动脚本test.sh,内容如下:
#! /bin/bash
nohup /usr/bin/java -Xms4g -Xmx4g  -Dspring.profiles.active=test -jar /home/users/me/test.jar > /dev/null 2>&1 &
exit 1
  • 远程执行脚本的命令为:
$> ssh test@server /home/users/me/sh/test.sh
  • 异常现象:服务器上执行jps可以短时间看到test.jar进程,SSH命令执行完成1~2秒后进程消失,监控日志示例如下:
test@server /home/users/me: jps
1281492 Jps
1281485 test.jar
test@server /home/users/me: jps
1281546 Jps
1281485 test.jar
test@server /home/users/me: jps
1281580 Jps

问题原因

核心原因为SSH远程执行命令的默认工作目录不符合Spring Boot的启动要求
Spring Boot启动时会默认读取当前工作目录下config文件夹内的配置文件,该案例中配置文件存放在/home/users/me/config路径下。
直接通过SSH执行远程脚本时,命令的默认工作目录不是/home/users/me,导致Spring Boot启动时找不到配置文件,初始化失败后进程自动退出。

解决方案

执行SSH命令时先切换到配置文件所在的工作目录,再执行启动脚本即可:

$> ssh test@server 'cd /home/users/me; /home/users/me/sh/test.sh'

也可以直接修改test.sh脚本,在启动Java进程前先执行cd /home/users/me切换目录,后续执行命令无需再手动切换目录。

内容的提问来源于stack exchange,提问作者Juneyoung Oh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 11:48:02