Bashで多くのバックグラウンドタスクを待つ方法

Bashで多くのバックグラウンドタスクを待つ方法

Bashで並列処理を実行するには?

私のbashスクリプトでは、私のアプローチは多くのバックグラウンドタスクを追加し、配列を使用して&各プロセスIDを追加し、ループを使用してその配列を取得し、その中でwaitコマンドを使用することです。しかし、とにかくwait命令は在職中ではありません。

私のコードは次のとおりです

for i in some path 
do 
    ls -d $i | xargs du -kh --max-depth=0 |sed 's/\t/,/g' >> $TEMP/Outfile/disk_usage_Session_wise.csv & 
    pid=$!
    ls -d $i/session | xargs du -kh --max-depth=1 | sed 's/\t/,/g' >> $TEMP/Outfile/disk_usage_Session_wise.csv & 
    pid_1=$! 
    process_list=($pid $pid_1) 
done 

for job in echo ${process_list[@]} 
    do 
    echo "$job is running" 
    wait $job # this command is not working 
done –

ベストアンサー1

他のソフトウェアを使用できますか?それともbashしかできませんか?GNU Parallelこれが作業を完了するために必要なようです。または少なくとも議論が-nあります-Pxargs

おすすめ記事