4つのプロセスを並列に実行したいのですが、4つのプロセスがすべて完了するまで新しいジョブは作成されません。
編集:私のコマンドは次のとおりです。
探す。 -name '*.log' |パラレル -j 4 './process.sh {}'
答え1
この質問は最近メーリングリストに追加されました: https://lists.gnu.org/archive/html/parallel/2019-06/msg00003.html
短い答えは次のとおりです。 GNU Parallelに関する限り、これはできません。 (絶対に)解決策は次のとおりです。
https://lists.gnu.org/archive/html/parallel/2019-06/msg00008.html
待ち行列:
#!/bin/bash
parpar() {
. `which env_parallel.bash`
env_parallel --session
inner() {
parallel "${command[@]}"
}
export -f inner
command=()
while [[ $# -gt 0 ]]; do
if [[ $1 == ",,," ]] ; then
break
fi
command+=("$1")
shift
done
printf "%s\n" "$@" |
env_parallel --pipe --recend ',,,\n' --rrs -j1 -N1 inner
}
# Example (,,, = wait for completion)
parpar -v sleep {}\; echo {} ,,, 3.9 4 4.1 ,,, 1 2 3 ,,, 0.2 0.3 0.1