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