如何在 AIX 中像 xargs 一样带有“--max-procs”的进程队列?

如何在 AIX 中像 xargs 一样带有“--max-procs”的进程队列?

考虑一个简单的处理队列,例如:

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正在启动的进程。

相关内容