[英]Linux : launch a specific action when another process is terminated
我有一个脚本foo.sh
, bfoo.sh
在后台启动 5 个bfoo.sh
进程,如下所示:
for i in {1..5}
do
./bfoo.sh &
done
wait
echo ok
我像这样使用它:
./foo.sh
在 for 循环之后的foo.s
,我想为每个进程bfoo.sh
终止做类似 ie 的事情
echo $PID_Terminated
为此,您需要存储bfoo.sh
的每个后台进程的bfoo.sh
。 $!
包含最后由 shell 后台处理的进程 ID。 我们一次将它们添加到数组中并稍后对其进行迭代
请记住,这会一个接一个地运行您的后台进程,因为您分别wait
每个进程 ID。
#!/usr/bin/env bash
pidArray=()
for i in {1..5}; do
./bfoo.sh &
pidArray+=( "$!" )
done
现在等待每个进程并在循环中
for pid in "${pidArray[@]}"; do
wait "$pid"
printf 'process-id: %d finished with code %d\n' "$pid" "$?"
done
我还添加了后台进程的退出代码$?
当它完成时,以便可以调试任何异常退出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.