gpt4 book ai didi

bash - 为什么执行 "docker exec"会杀死我的 SSH session ?

转载 作者:行者123 更新时间:2023-12-02 14:17:42 25 4
gpt4 key购买 nike

假设我有两台服务器,AB .我也有 bash在服务器上执行的脚本 A看起来像这样:

build_test.sh

#!/bin/bash
ssh user@B <<'ENDSSH'
echo "doing test"
bash -ex test.sh
echo "completed test"
ENDSSH

测试文件
#!/bin/bash
docker exec -i my_container /bin/bash -c "echo hi!"

问题是 completed test不会打印到终端。

这是运行 build_test.sh 的输出:
$ ./build_test
doing test
+ docker exec -i my_container /bin/bash -c "echo hi!"
hi!

我在期待 completed testhi! 之后输出,但事实并非如此。我该如何解决?

最佳答案

docker正在消耗,虽然不使用,它的标准输入,它继承自 test.sh . test.shbash 继承其标准输入,它从 ssh 继承其标准输入.这意味着 docker它本身正在远程 shell 之前读取脚本的最后一行。

要修复,只需从 /dev/null 重定向 docker 的标准输入.

docker exec -i my_container /bin/bash -c "echo hi!" < /dev/null

关于bash - 为什么执行 "docker exec"会杀死我的 SSH session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55765614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com