Como ter uma fila de processos no AIX como xargs com “--max-procs”?

2

Considere uma fila de processamento simples como:

cat list.txt | xargs -n1 -P20 process.sh 

( -P ou --max-procs)

Como ter algo parecido no AIX?

    
por Luciano 23.09.2015 / 17:07

1 resposta

3

Você pode emular a mesma coisa substituindo seus xargs por um script ksh. Por exemplo:

#!/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

A variável de shell nproc conta o número de processos em que foi executada o fundo. Quando um processo termina, o shell captura o sinal SIGCLD para decrementar a variável. Um loop de pesquisa de suspensão interrompe mais de max dos processos iniciados.

    
por 23.09.2015 / 19:00