バックグラウンドプロセスが完了し、プロセスIDが逆方向に一致するのを待ちます。

バックグラウンドプロセスが完了し、プロセスIDが逆方向に一致するのを待ちます。

複数のバックグラウンドプロセスをループで実行したいのですが、すべてのプロセスが完了するのを待ちながら、他のバックグラウンドプロセスは続行したいと思います。

waitいくつかの調査の最後に、単一のプロセスIDと逆マッチングするのではなく、必要な各プロセスIDを一覧表示する必要があるソリューションのみを確認しました。似たようなものがあればwait != $pidとても便利です。

スクリプト例:

#!/bin/bash

command1 &
pid=$!
for i in ${array[@]}; do
    for n in $(seq 3); do
        if [ $n -eq 1 ];
            command2 > file &
        else
            command2 >> file &
        fi
    done
done

この例では、すべてのプロセスを一覧表示するためにコマンドを使用する$pid必要がないことを除いて、各プロセスが完了するのを待ちたいと思います。wait可能ですか?

ベストアンサー1

ただ何か間違っています。

wait

述べたようにhelp wait:

ID(プロセスIDまたはジョブ仕様のいずれか)で識別されたプロセスを待ち、そのプロセスの終了ステータスを報告します。 IDが指定されていない場合は、現在アクティブなすべての子プロセスが待機し、ステータス0が返されます。

「引き続き別のバックグラウンドプロセスを引き続き許可する」としますか?ただdisown。あなたの例に従ってください。

command1 & disown %1
command2 & command2 & command2 &
wait

おすすめ記事