[英]Run block of commands parallelly & save output to a file sequentially
我正在寻找一个 Linux Shell 脚本,我可以在其中并行运行命令块并将 output 顺序保存到文件中。
例如:
for each line in file.txt {
Execute A
Execute B
Execute C > Save output to output.txt
}
我们如何确保 output.txt 具有顺序 output 并且命令块可以并行运行
wait
bash 内置等待所有后台作业。 因此,将他们的 output 重定向到一个临时文件,等到它们结束,然后连接临时文件应该是你想要的。 我们将Execute A
替换为( echo "A"; sleep 5
)` 的示例:
if tA=$(mktemp); then ( echo "A"; sleep 5` ) > "$tA" & fi
if tB=$(mktemp); then ( echo "B"; sleep 5` ) > "$tB" & fi
if tC=$(mktemp); then ( echo "C"; sleep 5` ) > "$tC" & fi
wait
cat "$tA" "$tB" "$tC" > output.txt
rm -f "$tA" "$tB" "$tC"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.