![Unterdrücken von stderr in GNU Parallel](https://rvso.com/image/1417399/Unterdr%C3%BCcken%20von%20stderr%20in%20GNU%20Parallel.png)
Ich verwende GNU Parallel, um einen Befehl mehrere tausend Mal gleichzeitig auszuführen.
Um Protokolle der Ausführung zu erhalten, verwende ich --files
und --results
.
Um während der Ausführung einen schönen Fortschrittsbalken zu erhalten, verwende ich --eta
und --progress
.
Jetzt besteht mein Problem darin, dass STDERR zwar zu den Dateien umgeleitet wird, aber weiterhin auf dem Terminal ausgegeben wird, was meinen Fortschrittsbalken beschädigt.
Wie kann ich das Drucken von STDERR auf dem Terminal unterdrücken? Ich möchte diese Informationen trotzdem in den Protokolldateien haben, daher kann ich den Befehl nicht einfach in einschließen 2>/dev/null
.
Bisher sieht meine Befehlszeile folgendermaßen aus:
cat input.txt | parallel -P 10 --progress --eta --files --results output_dir/ "./script.sh some-arg {}"
Antwort1
Wenn Sie eine schöne Bar möchten, darf ich --bar
anstelle von vorschlagen --eta
? Sie benötigen Version 20131122 oder höher.
Dies scheint zu funktionieren, da STDERR-Dateien nicht gedruckt werden, sodass Sie auf STDERR nichts erhalten außer --bar
:
cat input.txt | parallel -P 10 --bar --files --results output_dir/ "./script.sh some-arg {}" >/dev/null
Antwort2
Das hat bei mir funktioniert:
parallel --bar --jobs 10 '(ffmpegthumbnailer -i "{}" -o "/tmp/${DIR}/{}.jpg" -f 2>/dev/null)' ::: *.mp4