如何以正确的顺序使用 docker 容器运行 bash 脚本?

如何以正确的顺序使用 docker 容器运行 bash 脚本?

我有一个主 bash 脚本,它执行几个较小的 bash 脚本(每个较小的脚本运行一个 docker 容器),但我希望第二个脚本仅在第一个脚本完成执行后运行,依此类推。也就是说,我希望每个脚本的进程不要同时运行。例子:

1st_script.sh param1 param2 param3
2nd_script.sh param1 param2

网上的建议对我不起作用。我尝试使用以下命令获取 1st_script 的 PID:

1st_Script & echo $!

然后使用ps -p <PID> || <2nd_script> 但是虽然<1st_Script> & echo $!给出了 PID,但当我检查进程是否存在时却ps -p <PID>什么也没有。我知道 1st_script 正在运行,因为它运行的 docker 容器以docker ps.所以它的过程也应该列出ps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...不是一个选项,因为我有很多脚本并且不可读

答案1

续行可以大大提高可读性:

script1 && script2 && script3 && scriptn

相对

script1 \
  && script2 \
  && script3 \
  && scriptn

但我无法重现您的问题。是什么让您觉得您的脚本是不是按顺序运行?

我制作了两个测试脚本,每个脚本都包含

echo hello
sleep 15s

然后是一个只包含

./script1
./script2

并测量等待时间time以获得以下输出

hello
hello

real    0m30.003s
user    0m0.002s
sys     0m0.001s

如果脚本同时运行,总时间将少于 30 秒。

您的问题是您想要的容器在移动到下一个脚本之前停止运行?

相关内容