Suprimindo stderr no GNU Parallel

Suprimindo stderr no GNU Parallel

Estou usando o GNU Parallel para executar simultaneamente um comando milhares de vezes.

Para obter logs da execução que estou usando --filese --results.

Para obter uma boa barra de progresso enquanto estiver em execução, estou usando --etae --progress.

Agora, meu problema é que enquanto o STDERR é redirecionado para os arquivos, ele ainda é impresso no terminal, o que corrompe minha barra de progresso.

Como posso suprimir a impressão de STDERR no terminal? Ainda quero ter essas informações nos arquivos de log, por isso não posso simplesmente agrupar o comando em arquivos 2>/dev/null.

Até agora minha linha de comando está assim:

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

Responder1

Se você quiser um bar legal, posso sugerir --barem vez de --eta? Você precisa da versão 20131122 ou posterior.

Isso parece funcionar, já que os arquivos STDERR não são impressos, então você não obtém nada no STDERR além de --bar:

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

Responder2

Isso funcionou para mim:

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

informação relacionada