gpt4 book ai didi

Linux : launch a specific action when another process is terminated

转载 作者:太空狗 更新时间:2023-10-29 12:09:54 24 4
gpt4 key购买 nike

我有一个脚本 foo.sh 在后台启动 5 个 bfoo.sh 进程,如下所示:

for i in {1..5}
do
./bfoo.sh &
done
wait
echo ok

我是这样使用它的:

./foo.sh

在 for 循环之后的 foo.s 中,我想做一些类似的事情,即对于每个 bfoo.sh 终止的进程 do

echo $PID_Terminated

最佳答案

为此,您需要存储bfoo.sh 的每个后台进程的PID。 $! 包含最后由 shell 后台处理的进程 ID。我们一次将它们追加到数组中,稍后对其进行迭代

请记住,这会一个接一个地运行您的后台进程,因为您对每个进程 ID 分别进行了 wait

#!/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

我额外添加了后台进程$?结束时的退出代码,这样可以调试异常退出。

关于Linux : launch a specific action when another process is terminated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48022872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com