我担心在脚本中,我将调用一个函数的并行版本在后台运行,然后发出等待。
a () {
sleep $1
}
a 10 &
PIDs="$PIDs $!"
a 50000 &
PIDs="$PIDs $!"
wait $PIDs
Run Code Online (Sandbox Code Playgroud)
问题是第一个函数调用需要 10 秒(睡眠 10),但第二个需要将近 14 小时(睡眠 50000)。
我担心第一次调用的 PID 将被回收,14 小时后,当第二次调用终止时,该 PID 正在被另一个进程使用,并将阻止脚本继续。还是等待调用完成后立即从列表中删除第一个 PID,只是简单地等待第二个进程完成而不是等待它们两个都在最后完成?