Gnu-Parallel
有沒有辦法告訴 GNU parallel 在批處理中的所有作業完成之前推遲生成新作業?
我想並行執行四個程序,但在這四個都完成之前不會產生任何新作業。
編輯:我的命令如下所示:
尋找 。-名稱“*.log”| 並行 -j 4 ‘./process.sh {}’
這個問題最近已被列入郵件列表: 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