![Suprimindo stderr no GNU Parallel](https://rvso.com/image/1417399/Suprimindo%20stderr%20no%20GNU%20Parallel.png)
Estou usando o GNU Parallel para executar simultaneamente um comando milhares de vezes.
Para obter logs da execução que estou usando --files
e --results
.
Para obter uma boa barra de progresso enquanto estiver em execução, estou usando --eta
e --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 --bar
em 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