Suprimiendo stderr en GNU Parallel

Suprimiendo stderr en GNU Parallel

Estoy usando GNU Parallel para ejecutar simultáneamente un comando varios miles de veces.

Para obtener registros de la ejecución, estoy usando --filesy --results.

Para obtener una buena barra de progreso mientras se ejecuta, estoy usando --etay --progress.

Ahora, mi problema es que aunque STDERR se redirige a los archivos, todavía se imprime en la terminal, lo que corrompe mi barra de progreso.

¿Cómo puedo suprimir la impresión de STDERR en la terminal? Todavía quiero tener esta información en los archivos de registro, por lo que no puedo simplemente encapsular el comando en 2>/dev/null.

Hasta ahora mi línea de comando se ve así:

cat input.txt | parallel -P 10 --progress --eta --files --results output_dir/ "./script.sh some-arg {}"

Respuesta1

Si quieres un buen bar, ¿puedo sugerirte --baren lugar de --eta? Necesita la versión 20131122 o posterior.

Esto parece funcionar, ya que los archivos STDERR no se imprimen, por lo que no obtiene nada en STDERR aparte de --bar:

cat input.txt | parallel -P 10 --bar --files --results output_dir/ "./script.sh some-arg {}" >/dev/null

Respuesta2

Esto funcionó para mí:

parallel --bar --jobs 10 '(ffmpegthumbnailer -i "{}" -o "/tmp/${DIR}/{}.jpg" -f 2>/dev/null)'  ::: *.mp4

información relacionada