Articulo de referencia

Paralelo GNU

{{cite mailing list|url=https://lists.gnu.org/archive/html/parallel/2026-06/msg00000.html|title=GNU Parallel 20260622 ('Rape Gang Inquiry') released [stable]|date=27 Jun 2026|ma...

GNU parallel es una utilidad de línea de comandos para Linux y otros sistemas operativos tipo Unix que permite al usuario ejecutar scripts o comandos de shell en paralelo . GNU parallel es software libre , escrito por Ole Tange en Perl . Está disponible bajo los términos de la GPLv3 . [ 2 ]

Uso

Vídeo de introducción, Parte 1
Vídeo de introducción, Parte 2

El uso más común es reemplazar el bucle de shell, por ejemplo

mientras lee x ; hacer hacer_algo " $x " hecho < lista 

a la forma de

hacer_algo en paralelo < lista 

donde el archivo listcontiene argumentos para do_somethingy donde process_outputpuede estar vacío.

Los scripts que utilizan parallel suelen ser más fáciles de leer que los scripts que utilizan pexec .

El programa también incluye características paralelas.

  • agrupación de la salida estándar y el error estándar para que la salida de los trabajos que se ejecutan en paralelo no se ejecuten simultáneamente;
  • conservando que el orden de salida permanezca igual que el de entrada;
  • maneja correctamente los nombres de archivo que contienen caracteres especiales como espacios, comillas simples, comillas dobles, el signo de ampersand y caracteres codificados en UTF-8;

Por defecto, el modo paralelo ejecuta tantos trabajos en paralelo como núcleos de CPU tenga .

Ejemplos

buscar . -nombre "*.foo" | barra grep paralela

Lo anterior es el equivalente paralelo a:

encontrar . -nombre "*.foo" -exec grep bar {} + 

Esto busca en todos los archivos del directorio actual y sus subdirectorios cuyos nombres terminen .fooen la cadenabar . El comando paralelo funcionará como se espera a menos que el nombre de un archivo contenga un salto de línea . Para evitar esta limitación, se puede usar:

encontrar . -nombre "*.foo" -imprimir0 | paralelo -0 barra grep

El comando anterior utiliza el carácter nulo para delimitar los nombres de archivo.

encontrar . -nombre "*.foo" | paralelo -X mv {} /tmp/trash 

El comando anterior se expande {}con tantos argumentos como permita la longitud de la línea de comandos, distribuyéndolos uniformemente entre tareas paralelas si es necesario. Esto puede reducir la sobrecarga del proceso para comandos de corta duración que tardan menos en completarse que en ejecutarse.

encontrar . -maxdepth 1 -type f -name "*.ogg" | parallel -X -r cp -v -p {} /home/media 

El comando anterior hace lo mismo que:

cp -v -p *.ogg /home/media 

Sin embargo, el primer comando, que utiliza find/ parallel/, cpes más eficiente en el uso de recursos y no se detendrá con un error si la expansión de *.ogg es demasiado grande para el intérprete de comandos.

Véase también

Referencias

  1. Tange, Ole (27 de junio de 2026). "GNU Parallel 20260622 ('Investigación sobre bandas de violadores') publicado [ estable ] " . parallel (lista de correo).
  2. «GNU Paralelo» . GNU.org .
  • Sitio web oficialEdita esto en Wikidata
  • Página del proyecto y página del manual de GNU parallel