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
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 paralelaLo 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 grepEl 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
Enlaces externos
- Software libre programado en Perl
- Software del Proyecto GNU
- Software relacionado con la gestión de procesos y tareas en Linux
- Software de línea de comandos