Entonces tengo un ciclo while:
cat live_hosts | while read host; do \
sortstuff.sh -a "$host" > sortedstuff-"$host"; done
Pero esto puede llevar mucho tiempo. ¿Cómo usaría GNU Parallel para este ciclo while?
shell-script
files
gnu-parallel
Proletariado
fuente
fuente

teeconparallelal poner la salida ensortedstuff? Entonces puedo ver la salida a medida que avanza.>con,| teepor ejemplo, el primer comando se convierte enparallel "sortstuff.sh -a {} | tee sortedstuff-{}" <live_hostsComo un tipo de Unix de la vieja escuela "haz una cosa y hazlo bien", pondría las cosas de sustitución de cadenas en un script de envoltura:
Si lo llama
wrapper.sh, elparallelcomando para llamarlo sería:Tenga en cuenta que no necesita
cateste tipo de cosas, lo que ahorra una invocación de programa externo.fuente
No es necesario
parallel, ya que el cuerpo del bucle no depende de las iteraciones anteriores. Simplemente inicie un nuevo proceso en segundo plano para cada host.parallelsin embargo, facilita la gestión de ciertos aspectos; puede limitar la cantidad de trabajos que se ejecutan en paralelo más fácilmente.fuente
wc -l live_hostses mayor que el número de ejes de disco o núcleos de CPU, dependiendo de si la tarea es de E / S o vinculada a la CPU, va a comer mucha de la ventaja que obtiene del paralelismo con una solución como esa. La capacidad deparallellimitar el número de trabajos no solo es agradable, es casi esencial, si la velocidad de procesamiento es su objetivo.