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

weixin_38056491 2019-09-12 01:17:28
我已经运行了docker ubuntu容器,里面只有一个bash脚本.我想用docker exec在那个容器内启动我的应用程序: docker exec -it 0b3fc9dd35f2 ./main.sh 在主脚本里面我想用nohup运行另一个应用程序,因为这是一个运行时间很长的应用程序: #!/bin/bash nohup ./java.sh & #with this strange sleep the script is working #sleep 1 echo `date` finish main >> /status.log java.sh脚本如下(为简单起见,它是一个虚拟脚本): #!/bin/bash sleep 10 echo `date` finish java >> /status.log 问题是在docker exec返回后java.sh被立即杀死.问题是为什么? 我发现的唯一解决方案是在nohup启动后在第一个脚本中添加一些虚拟睡眠1.比第二个进程运行正常.你知道为什么会这样吗? [编辑] 第二种解决方案是在睡眠前向java.sh脚本添加一些echo或trap命令.比它工作正常.不幸的是我不能使用这个解决方法而不是这个脚本我有java进程.
...全文
552 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_44995403 2022-03-24
  • 打赏
  • 举报
回复

牛哇牛哇

微凉下午茶 2021-02-09
  • 打赏
  • 举报
回复
解决方案为: docker exec -d 容器名 /bin/bash -c "脚本所在的路径"
weixin_38058428 2019-09-12
  • 打赏
  • 举报
回复 1
这不是答案,但我仍然没有评论所需的声誉. 我不知道为什么nohup不起作用.但我使用你的想法做了一个有效的解决方法: docker exec -ti running_container bash -c 'nohup ./main.sh &> output & sleep 1'
Chengyuha 2021-07-28
  • 举报
回复
@weixin_38058428 牛逼卧槽1!!

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧