¿Cómo puedo crear un bucle for que inicie muchos procesos?

¿Cómo puedo crear un bucle for que inicie muchos procesos?

Quiero probar algún error y, para hacerlo, necesito tener una situación en la que el PID sea mayor que 99999. Estoy pensando en un script bash, un bucle for. ¿Algunas ideas?

Respuesta1

Podrías hacer algo como esto para iniciar un proceso con el PID deseado.

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

Puede esperar hasta obtener el PID deseado y probablemente reemplazar la echodeclaración por lo que realmente necesite probar.

Referencias

¿Se usará el mismo pid después de que lo maten?

EDITAR

¿Por qué crece el número PID? ¿Se debe al hecho de que ejecuta una instancia de bash diferente una y otra vez?

Creo que lo que has contado es lo que está pasando. Esto podría probarse simplemente como se muestra a continuación.

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

Pudimos ver que los PID siguen incrementándose y en la página de manual de bashveo eso,

-c cadena Si la opción -c está presente, los comandos se leen desde la cadena. Si hay argumentos después de la cadena, se asignan a los parámetros posicionales, comenzando con $0.

Según tengo entendido, cada echodeclaración en las pruebas anteriores se ejecuta como un proceso separado, por lo que pudimos ver que los PID se incrementan.

Respuesta2

Independientemente de lo que intente hacer, probablemente sea el mejor enfoque, pero si está decidido a algo como

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

iniciará muchos sleeps, pero puede llevar un tiempo iniciarlos todos. Cuando tenga suficientes procesos, simplemente presione Ctrl-Cpara salir del whilebucle.

información relacionada