我想知道如果可能的话,我可以在BASH中创建一个简单的作业管理来并行处理多个命令.也就是说,我有一个很大的命令列表要运行,我想在任何给定的时间运行其中两个.
我对bash有很多了解,所以这里有一些要求让它变得棘手:
我在想我可以使用trap但我没有看到一个简单的方法来获取处理程序中的子项的退出值.
那么,关于如何做到这一点的任何想法?
好吧,这里有一些概念代码可能有用,但它打破了bash:无效的命令行生成,挂起,有时是核心转储.
# need monitor mode for trap CHLD to work
set -m
# store the PIDs of the children being watched
declare -a child_pids
function child_done
{
echo "Child $1 result = $2"
}
function check_pid
{
# check if running
kill -s 0 $1
if [ $? == 0 ]; then
child_pids=("${child_pids[@]}" "$1")
else
wait $1
ret=$?
child_done $1 $ret
fi
}
# check by copying pids, clearing list and then …Run Code Online (Sandbox Code Playgroud) bash ×1