Como posso fazer um loop para iniciar muitos processos?

2

Eu quero testar algum bug, e para isso eu preciso ter uma situação em que o PID é maior que 99999. Estou pensando em um script bash, um loop for. Alguma idéia?

    
por drpaneas 14.10.2014 / 17:45

2 respostas

2

Você poderia fazer algo assim para iniciar um processo com o PID desejado.

while true; do bash -c '[[ "$$" == 99999 ]] && echo PID is 99999'; done

Você pode esperar até obter o PID desejado e provavelmente substituir a instrução echo pelo que realmente precisa ser testado.

Referências

o mesmo pid será usado após ser morto?

EDITAR

Por que o número PID cresce? É devido ao fato de você executar uma instância bash diferente repetidamente?

Eu acredito que o que você contou é o que está acontecendo. Isso poderia ser testado simplesmente como abaixo.

while true; do bash -c 'echo $$' ; done

Percebemos que os PIDs continuam sendo incrementados e, a partir da página de manual de bash , vejo isso,

-c string If the -c option is present, then commands are read from string. If there are arguments after the string, they are assigned to the positional parameters, starting with $0.

Então, de acordo com o meu entendimento, cada instrução echo no teste acima está sendo executada como um processo separado, e é por isso que podemos ver que os PIDs estão sendo incrementados.

    
por 14.10.2014 / 18:30
1

O que quer que você esteja tentando fazer, provavelmente é a melhor abordagem, mas se você está determinado algo como

while [[ 1 == 1 ]]; do sleep 10000& done

iniciará muitos sleeps , mas poderá demorar um pouco para iniciar todos eles. Quando você tiver processos suficientes, clique em Ctrl-C para sair de while loop.

    
por 14.10.2014 / 18:09