shell脚本执行 java项目 脚本启动完 进程就被杀掉了?

我在docker里面创建了一个ubuntu的容器,在容器里面写了一个脚本用来执行java项目,脚本命令如下:

#!/bin/bash
echo "$(date) 启动MySQL和Java应用..."

# 启动MySQL
/usr/local/mysql/bin/mysqld_safe &
echo "MySQL启动命令已执行"

# 等待MySQL充分启动(增加等待时间)
echo "等待MySQL启动..."
sleep 10

# 检查MySQL是否真的启动了
if netstat -tln | grep -q 3306; then
    echo "MySQL启动成功,端口3306已监听"
else
    echo "MySQL可能启动失败"
fi

# 启动Java应用
echo "切换到/home目录"
cd /home
echo "当前目录: $(pwd)"

# 启动Java应用并记录PID
java -jar warehouse-0.0.1-SNAPSHOT.jar&
JAVA_PID=$!
echo "Java应用启动命令已执行,PID: $JAVA_PID"

# 等待Java应用启动
sleep 20

echo "启动完成,检查进程状态:"

执行命令是:

docker exec -it 592f1182c3ca /bin/bash  -c "/home/java.sh"

发现这个命令执行完后mysql可以后他运行,java项目挂了,怎么都访问不到。
原因:问题是Java进程在脚本执行结束后就被终止了。这是因为脚本退出时,会向所有子进程发送SIGHUP信号,导致Java进程退出。
解决办法:在java -jar 前面加一个nohup

nohup java -jar warehouse-0.0.1-SNAPSHOT.jar&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值