考虑一个简单的处理队列,例如:
cat list.txt | xargs -n1 -P20 process.sh
(-P 或 --max-procs)
如何在 AIX 中拥有类似的东西?
答案1
您可以通过用 ksh 脚本替换 xargs 来模拟同样的事情。例如:
#!/bin/ksh
nproc=0 max=20
trap 'let nproc--' sigchld
while read file
do while [ $nproc -ge $max ]
do sleep 1
done
process.sh "$file" &
let nproc++
done
wait
shell 变量nproc
计算它在后台运行的进程数。当进程结束时,shell 捕获 SIGCLD 信号以减少变量。睡眠轮询循环停止的进程多于max
正在启动的进程。