He paralelizado un ciclo for en bash usando GNU Parallel. Este es un ejemplo muy simple para mostrar lo que quiero alcanzar:
seq 10 | parallel -n0 echo "Hello World" &
Me gustaría desconectar de la terminal toda la ejecución, excepto la última, eliminando así el & solo en el último ciclo. ¿Hay alguna forma de hacer esto?
EDIT: Como no fui muy claro, intentaré explicarme mejor:
Tengo un simulador comenzando, luego con GNU paralelo ejecuto muchas veces el mismo script que se conecta con el simulador. Quiero que todos se separen del terminal excepto el último para evitar confusiones con la salida superpuesta.
No hay opción para eso, pero el valor predeterminado es que el primer trabajo obtiene /dev/tty como entrada. Entonces, ¿quizás puedas ejecutar tu último trabajo primero?
Si solo desea la salida y no la entrada, esto debería funcionar:
seq 10 | parallel echo Hello World '> {= $_= $job->seq() == total_jobs() ? "/dev/tty" : "/dev/null" =}'
(Requiere la versión 20160122 o posterior)
De lo contrario, una solución es guardar en archivos y generar el último archivo:
seq 10 | parallel --files -n0 echo Hello World | tail -n1 | parallel -u cat