Como posso fazer um loop for iniciando vários processos?

Como posso fazer um loop for iniciando vários processos?

Quero testar algum bug, e para isso preciso ter uma situação em que o PID seja maior que 99999. Estou pensando em um script bash, um loop for. Alguma ideia?

Responder1

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 echoinstrução pelo que você realmente precisa testar.

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 diferente do bash repetidamente?

Acredito que o que você contou é o que está acontecendo. Isso pode ser testado simplesmente como abaixo.

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

Pudemos ver que os PIDs continuam sendo incrementados e na página de manual de bash, vejo que,

-c string Se a opção -c estiver presente, os comandos serão lidos a partir da string. Se houver argumentos após a string, eles serão atribuídos aos parâmetros posicionais, começando com $0.

Pelo que entendi, cada echoinstrução no teste acima está sendo executada como um processo separado, e é por isso que pudemos ver que os PIDs estão sendo incrementados.

Responder2

O que quer que você esteja tentando fazer, provavelmente existe a melhor abordagem, mas se você estiver determinado, algo como

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

iniciará muitos sleeps, mas pode demorar um pouco para iniciar todos eles. Quando você tiver processos suficientes, basta clicar Ctrl-Cpara sair do whileloop.

informação relacionada