gpt4 book ai didi

linux - 脚本后无法返回 shell session

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:09 27 4
gpt4 key购买 nike

我无法获得返回 bash 的脚本。

脚本通过以下 Docker 指令启动:

ENTRYPOINT ["/bin/bash", "-c"]
CMD ["set -e && /config/startup/init.sh"]

初始化脚本如下所示:

#!/bin/bash

if [ -d /etc/postfix/init.d ]; then
for f in /etc/postfix/init.d/*.sh; do
[ -f "$f" ] && . "$f"
done
fi

echo "[x] Starting supervisord ..."
/usr/bin/supervisord -c /etc/supervisord.conf

bash

这是我用来将图像启动到容器中的命令:

docker run -it --env-file ENV_LOCAL mailrelay

init 脚本按预期运行(我在 /etc/postfix/init.d/ 目录和 supervisord 中看到脚本的输出启动了 Postfix。

问题是让脚本返回到父进程 (bash) 而不是需要启动一个新进程。在它到达 supervisord 之后, session 就在那里,需要 Ctrl+C 才能让它返回到 bash 提示符。

如果我在 init.sh 脚本末尾停止对 bash 的调用,Ctrl+D 会退出脚本和容器,返回主机操作系统(操作系统)。如果我用 exit 替换 bash 调用,它也会返回到主机操作系统。

supervisord 是否以这种方式在前台运行?我希望能够轻松地返回容器 shell session 以检查是否正在运行。我是否需要 Ctrl+D(进入辅助 bash session )才能执行此操作?

更新马克B

take out the bash line, so you don't start a new shell. and if supervisord doesn't go into the background automatically, you could try running it with & to force it into the background, or maybe there's an extra cli option to force it to go into daemon mode

我已经尝试删除对 bash 的最后一次调用,但正如我所提到的,它只是停在那里,然后 Ctrl+D 将我带到主机操作系统(退出容器)。

我刚刚尝试了 /usr/bin/supervisord -c/etc/supervisord.conf & (并在最后停止了对 bash 的调用),它只是立即返回主机操作系统,退出容器。我假设是因为容器没有什么可“做”的了,所以停止了。

最佳答案

#!/bin/bash

if [ -d /etc/postfix/init.d ]; then
for f in /etc/postfix/init.d/*.sh; do
[ -f "$f" ] && . "$f"
done
fi

echo "[x] Starting supervisord ..."
/usr/bin/supervisord -c /etc/supervisord.conf
one
bash # You are spawning a new bash shell here. Remove this statement

最后你被困在了一个child bash shell :(

现在,如果您没有返回到父 shell,那么您运行的最后一个命令就是罪魁祸首。

/usr/bin/supervisord -c /etc/supervisord.conf

您可以通过以下方式强制命令在后台运行

/usr/bin/supervisord -c /etc/supervisord.conf & #the & tells to run in background

提到了保持容器打开的解决方法 here

关于linux - 脚本后无法返回 shell session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36773714/

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