小编Mar*_*ski的帖子

为什么docker exec在退出时杀死nohup进程?

我已经运行了docker ubuntu容器,里面只有一个bash脚本.我想用docker exec在那个容器内启动我的应用程序:

docker exec -it 0b3fc9dd35f2 ./main.sh
Run Code Online (Sandbox Code Playgroud)

在主脚本里面我想用nohup运行另一个应用程序,因为这是一个运行时间很长的应用程序:

#!/bin/bash
nohup ./java.sh &
#with this strange sleep the script is working
#sleep 1
echo `date` finish main >> /status.log
Run Code Online (Sandbox Code Playgroud)

java.sh脚本如下(为简单起见,它是一个虚拟脚本):

#!/bin/bash
sleep 10
echo `date` finish java >> /status.log
Run Code Online (Sandbox Code Playgroud)

问题是在docker exec返回后java.sh被立即杀死.问题是为什么?

我发现的唯一解决方案是sleep 1在nohup启动后在第一个脚本中添加一些虚拟.比第二个进程运行正常.你知道为什么会这样吗?

[编辑]

第二种解决方案是在睡眠前向脚本添加一些echotrap命令java.sh.比它工作正常.不幸的是我不能使用这个解决方法而不是这个脚本我有java进程.

bash nohup docker

6
推荐指数
3
解决办法
8304
查看次数

标签 统计

bash ×1

docker ×1

nohup ×1