繁体   English   中英

Linux:在另一个进程终止时启动特定操作

[英]Linux : launch a specific action when another process is terminated

我有一个脚本foo.shbfoo.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM