GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecutar script de shell en paralelo

Hay una lista completa de programas que pueden ejecutar trabajos en paralelo desde un shell, que incluso incluye comparaciones entre ellos, en la documentación de GNU paralelo. Hay muchas, muchas soluciones por ahí. Otra buena noticia es que probablemente sean bastante eficientes en la programación de trabajos para que todos los núcleos/procesadores se mantengan ocupados en todo momento.


Para hacer que las cosas se ejecuten en paralelo, use '&' al final de un comando de shell para ejecutarlo en segundo plano, luego wait esperará de forma predeterminada (es decir, sin argumentos) hasta que finalicen todos los procesos en segundo plano. Entonces, tal vez inicie 10 en paralelo, luego espere, luego haga otros diez. Puede hacerlo fácilmente con dos bucles anidados.


Otra forma muy útil de hacer esto es con gnu paralelo, que bien vale la pena instalar si aún no lo tiene; esto es invaluable si las tareas no toman necesariamente la misma cantidad de tiempo.

seq 1000 | parallel -j 8 --workdir $PWD ./myrun {}

lanzará ./myrun 1 , ./myrun 2 , etc., asegurándose de que se estén ejecutando 8 trabajos a la vez. También puede tomar listas de nodos si desea ejecutar en varios nodos a la vez, por ejemplo, en un trabajo de PBS; nuestras instrucciones para nuestros usuarios sobre cómo hacerlo en nuestro sistema están aquí.

Actualizado para agregar: Quiere asegurarse de que está usando gnu-parallel, no la utilidad más limitada del mismo nombre que viene en el paquete moreutils (aquí se describe la historia divergente de los dos).


Echa un vistazo a las subcapas de bash, se pueden usar para ejecutar partes de un script en paralelo.

No he probado esto, pero esto podría ser un comienzo:

#!/bin/bash
for i in $(seq 1 1000)
do
   ( Generating random numbers here , sorting  and outputting to file$i.txt ) &
   if (( $i % 10 == 0 )); then wait; fi # Limit to 10 concurrent subshells.
done
wait

Linux
  1. ¿Tiempo de espera agotado en un script de Shell?

  2. ¿Cómo ejecutar un script de Shell en segundo plano?

  3. ¿Cómo se ejecuta un script al iniciar sesión en * nix?

  4. Edite el script de shell mientras se está ejecutando

  5. Comando de Linux para verificar si un script de shell se está ejecutando o no

Cómo ejecutar el comando / secuencia de comandos de Linux Shell en segundo plano

Cómo crear y ejecutar un script de Shell en Debian 10

Cómo crear y ejecutar un script de Shell en CentOS 8

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo ejecutar un script Bash

Cómo crear y ejecutar un script de shell en Ubuntu 22.04